Fonction d'auto suppression de l'application ou elle se trouve; et comment faire un shareware assez sur.

Soyez le premier à donner votre avis sur cette source.

Vue 4 495 fois - Téléchargée 520 fois

Description

Comme le dit le titre, c'est un bout de code à mettre (une ligne) dans une procédure pour supprimer l'application ou la fonction est executer.

Cela peut etre utile pour ce que j'appelle des applications jetables, comme les shareware.

Source / Exemple :


'''DANS UN SUB'''

Option Explicit

'Décalaration de l'API pour executer un fichier à partir de son logiciel par défaut
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'Décalaration de la fonction à Appeler pour supprimer son application (Public)
Public Function SuppMe() As Boolean

    On Error GoTo F 's'il y a une erreur comme si lespace ou lappli est en lecture seule
                    'il va hor de la fonction
    
    'Décalaration des variables
    Dim ff As Integer, AdD As String, AdN As String
    
    AdD = App.Path 'Nom du dossier ou lappli se trouve
    If Mid(AdD, Len(AdD), 1) <> "\" Then AdD = AdD & "\" 'ex : si lappli a pour adresse de dossier "c:\windows" celle ci deviendra "c:\windows\"
    AdN = AdD & App.EXEName & ".exe" 'Ainsi l'adresse du type ex : "C:\windows\" deviendra "c:\windows\NomAppli.exe"
    If Dir(AdN, vbHidden) = "" Then Exit Function 'Si l'application n'existe pas (on sait jamais) on en va
    ff = FreeFile()
    Open AdD & "kill.bat" For Output As #ff
        Print #ff, "@ECHO OFF"
        Print #ff, "DEL " & AdN
        Print #ff, "DEL %0"
    Close #ff
    ShellExecute 0, "open", AdD & "kill.bat", 0, 0, 0
    End
F:

End Function
'''FIN'''

'''ATTENTION CELA EST JUSTE UN EXEMPLE'''
'''ATTENTION CELA EST JUSTE UN EXEMPLE'''
'''ATTENTION CELA EST JUSTE UN EXEMPLE'''

'''DANS VOTRE FORM DE SHAREWARE'''

Private Const An=2004
Private Const Mois=6
Private Const Jour=8

Private Sub Form_Load()' ou Sub Main() si c un module qui demarre la procedure

    If App.PrevInstance Then End
    
    If (Year(Date)>=An) And (Month(Date)>=Mois) And (Day(Date)>=Jour) Then If Not(SuppMe()) Then End

    '''Continuations du code

End Sub

'''FIN DE L'EXEMPLE'''

Conclusion :


Pour une meilleur efficacité n'oubliez pas de mettre la ligne suivante dans la procedure de demarrage (sub main, ou form_load)

If App.PrevInstance Then End

''Ceci évitera que votre programme soit ouvert plusieur fois donc quil ne soit pas ouvert pdt lauto suppression

Sinon le projet joint est un exemple modèle pour crée votre shareware vous aurez juste a vous baser dessus et changer la date d'expiration ou vous crée votre propre systeme (mais la c plu risqué)

Place aux comments ;)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
332
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
10 avril 2020
1
J'utilise ce type de fonction qui est copier dans chaque feuille.
Avec d'autres protections codé dans mon programme avec tantôt True et tantôt false.
Cela oblige un craker de vérifier tout le code ! Y compris des fonctions inutiles qui apparaissent forcément dans le "Craker"
De plus, les noms sont différents, mais cela reste craquable.
Même avec une DLL, un programme reste difficile a protéger à 100 %,
Reste le "Soft" complet, codé à la demande... ou demandant un acces via le FAI du Soft...
Messages postés
3
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
10 septembre 2004

Aucun shareware ne peut être sûr. Un "cracker" expérimenté aura très vite fait de repérer le "if" critique de te le supprimer vite fait bien fait ^^.
> Protection aussi nulle que les autres ;-)


PS: Il ne faut pas oublier que la date limite doit être fixé à l'installation (ou bien à la première éxécution) du programme.
Messages postés
70
Date d'inscription
dimanche 11 janvier 2004
Statut
Membre
Dernière intervention
1 octobre 2004

Je sais que cela est possible mais en faisant comme cela on evite de pouvoir reinitialiser la duree en virant les clé du registre, meme en faisant un compte du nombre dutilisation mais c peut etre plus sur, si c le cas je vais changer le protocol ???
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Si on change la date du sytème ta protection Saute ...

Le batch pas terrible terrible ... Passer par un desinstalleur est plus propre.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.