IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Version de démo et Clé de license


Sujet :

WinDev

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut Version de démo et Clé de license
    Bonjour,
    ( et oui, encors moi )
    J'aimerais savoir si il était possible ( asser facilement ) de mettre en place 2 choses :

    1) une version d'évaluation du logiciel, limitée a quelques enregistrements
    2) Mettre une clé de license au logiciel que l'on entre 1 fois, lors du premier lencement.
    La clé, je sais ou la stocker, je sais aussi coment faire pour le systeme après avoir la clé.
    Mais, je bloque pour savoir comment génerer une clé aléatoirement qui soit toujours valable avec mon programme ???
    ( un code de géneration et un code de lecture ) pour UNIQUEMENT les clés compatible avec mon logiciel.
    ( je ne cherche pas un systeme incontournable mais simplement une protection )

  2. #2
    Membre éclairé Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Par défaut
    1. Avant chaque ajout, vérifie le nombre d'enregistrement du fichier (hnbenr)

    2. J'ai, dans un moment de délire, fait de quoi de semblable...
    J'ai pris un ficheir quelconque que j'ai renommé dll... ensuite, j'y ai inscrit la date à laquelle je voulait que le systeme arrete. À l'ouverture du logiciel, je vérifie l'existance de cette "dll" et son contenu (8 premiers caracteres)... s'il est expiré je me crée un fichier bidon dans mon répertoire. Ensuite, je vérifie à chaque utilisation si ca fichier existe... Si oui, meme si la date est reculée sur le pc, il ne peut entrer

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    je n'ai aps bien compris la manip du 2
    et, aussi, cela ne marche pas avec de clé que l'utilisateur entre !

  4. #4
    Membre chevronné
    Profil pro
    Freelance
    Inscrit en
    Avril 2003
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Avril 2003
    Messages : 393
    Par défaut
    Bonjour,

    Je cite:
    Ensuite, je vérifie à chaque utilisation si ca fichier existe... Si oui, meme si la date est reculée sur le pc, il ne peut entrer

    Il suffirait de supprimer le fichier alors pour pouvoir continuer à utiliser le logiciel non ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    Je pensais plutot a quelque chose dans ce style :
    1 clé d'enregistrement, l'utilisateur la rentre, elle est comparée a un systeme par exemple :

    1111-1111-1111-1111

    total des chiffres = 16
    toutes les clé ayant 16 pour total seront bonnes ex :
    4000-4000-4000-4000
    0400-4000-0004-0040

    ces clés seraient bonnes ... parmis tant d'autres ( un programme pourrait - il me les trouver ? )
    Donc, si la clé est bonne alors elle est enregistrée dans la base de donnée cyptée.
    A chaque démarrage, on vérifi que la base de donnée soit bien renseignée par ce champ !

    Mais, ce que je cherche, c'est un code qui me permettrait de reconnaitre mes clés :

    il faut pour cela attribuer une valeur a chaques lettres de l'alphabet et a chaques chiffres
    A=1
    B=2
    C=3
    etc...
    ( valeur fixe )
    ça, c'est facile.

    Mais, après, face a une certaine clé :
    82ZK-BP98-WVAK-0273

    Comment faire pour qu'il calcul chaques nombres et lettres ?
    8 = ??
    2 = ??
    Z = ??
    K = ??

    C'est la tout le soucis ! une fois calculé, le tour est joué

    Ensuite, y a t'il un moyen, en partant de ce principe, de génerer aléatoirement des clés valide de ce type :

    4000-4000-4000-4000
    0400-4000-0004-0040
    2350-0011-1200-0001
    etc...

    Il en existe un sacré paquet, que je ne veux pas trouver "a la main", avec aussi des lettres.

    J'espere que vous m'avez compris ...
    Merci,
    @+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 34
    Par défaut
    Bonjour,

    tu peux utiliser un système qui reprendrait les principes du numéro de sécurité sociale
    Tu obtiendrais donc un numéro générable facilement et facilement contrôlable.

    Autre solution, à chaque livraison d'un logiciel, tu génères aléatoirement une clé que tu livres avec le logiciel. Cette clé, tu la stocke dans une base de données et tu vérifies qu'elle existe et qu'elle n'est pas déjà utilisée avec un mécanisme de connexion directe à partir de windev ou associé à une page en php:
    Lancement de l'application -> appel d'une page php avec en argument la clé -> si la clé est dans la base de données et qu'elle n'est pas utilisé alors on renvoie une entête HTTP 200, sinon on renvoie une entête HTTP 301
    Le problème, c'est que cela nécessite une connexion internet de la part de ton client.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    Oui, mais j'ai une chaine et, pour "comparer" les nombres entrés a des variables, il faut extraire chaques chiffres ou lettres de la chaine, mais comment ?
    Ensuite, comment mettre en place un tel algorithme ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 34
    Par défaut
    si tu pars sur une solution comme le numéro de sécurité social, alors c'est simple puisque tu sais que :
    - le premier caractère doit être un 1 ou un 2
    - les deux suivant doivent être compris entre 0 et 99
    - les deux suivant doivent être compris entre 01 et 12
    ....

    Il suffit alors dans l'algorithme de découper la chaîne (voir l'aide de windev si tu ne sais pas comment faire) pour chaque vérification:
    - récupérer une chaîne de 1 caractère à partir du caractère 1
    - récupérer une chaîne de 2 caractère à partir du caractère 2
    - récupérer une chaîne de 2 caractère à partir du caractère 4
    ...

    Ensuite, tu met en place ta vérification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Si chaine1 est égale à 1 ou 2 alors
        Si Valeur(chaine2) est compris entre 0 et 99 alors
            Si chaine3 est égale à '01' ou '02' ou ... ou '12' alors
                ........
                renvoyer Vrai
            Sinon renvoyer Faux
        Sinon renvoyer Faux
    Sinon renvoyer Faux

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    Tout ce que j'ai trouvé c'est
    Droite() ou Gauche()
    Mais ça récupère tous les x caractères en partant de la droite ou de la gauche !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 34
    Par défaut
    Pourtant l'aide de Windev est bien faite. Tu aurais du voir Milieu()

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Ou bien [[ ]]

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    Bonsoir,
    Merci beaucoup !
    J'ai réussi a faire un composant : au démarrage du programme, test dans l'analyse d'une rubrique pour voir si elle est renseignée.
    Si elle est renseignée ( il y a une clée ) alors on continue.
    Sinon, 2 choix : utiliser la version d'essai ( limitée a 25 enregistrements ) ou rentrer une clé de 16 caractères pour avoir la version complète.

    Seul soucis : comment supprimer avec les fonctions hyperFile TOUTES les données d'une rubrique ?

  13. #13
    Membre éclairé Avatar de Le Shadow
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 265
    Par défaut
    soit une boucle ou encore une requete sql "Update" qui met ton champ à blanc...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    OK, merci !
    Et, une autre petite question, est-il possible de créer un génerateur aléatoire de clé d'activation au type que j'ai mis ?
    ( j'ai utilisé votre façon : si ... renvoyer vrai sinon renvoyer faux )

  15. #15
    Membre éclairé
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Par défaut
    Salut,
    Une solution a laquelle j'ai pense mais que j'ai pas encore eu l'occasion de mettre en place, c'est recuperer le numero de serie du disc dur ou du processeur ou de mixer les deux et puis travailler dessus (operation, soustraction, ...) qui te donnera une cle unique ! Pour recupere ces numeros, il me semble qu'il faut regarder du cote du composant system.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 223
    Par défaut
    le but n'est pas d'avoir une clé unique mais une clé que je peux génerer moi-même pour les utilisateurs ( ce que j'ai fait avec la version de démo ) et ça marche !
    Il reste évidement un soucis : un utilisateur prend une clé, il peut la donner a son voisin, elle fonctionnera !
    Mais, pour faire un autre systeme ( la clé rentrée n'est plus utilisable ), il faut une connexion internet, ce que les utilisateurs n'auront pas.
    Mais ce systeme m'ai bien utile pour connaitre a peu près ceux qui utilisent mon logiciel.
    Si vous voulez, je pourrais poster un ^projet ou il y a les fenetres, les procédures et tout ce qu'il faut pour faire ce systeme ( ou je vous laisse chercher )

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Par défaut
    Salut,

    Il existe une autre façon de procéder, mais plus contraignante, lors de l'installation de ton logiciel en version complète tu récupère un n° de serie unique par soft installé, l'utilisateur devra te le communiquer par mail, fax téléphone ou autre et toi tu lui renvoi un code de déblocage et en même temps tu sais que le logiciel avec le n° xxxx est déjà installé pour l'utilisateur Y. Ca n'empêche pas l'utilisation par qqu'un qui à obtenu le code de désactivation, mais tu peux proposer une sorte de maintenance que pour les logiciels enregistrés, ou comme certains éditeurs font, faire en sorte qu'au bout de x mois/ ans d'utilisation, on te redemande un nouveau code que tu ne fournit qu'aux utilisateurs enregistrés. C'est un peu lourd en gestion mais ça dépend de la valeur relative de ton soft.
    A+

  18. #18
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Togo

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut recupere le N° du disque dur
    pour ma part je recupere le numeros du disque dur( l'idéale serait le processeur : fait moi signe si tu arrive)

    je procede comme suit
    dans le code d'initialisaion du projet tu ajoute le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	p_cle  est une chaîne= "3294"
    	p_cle2 est une chaîne= "9" 
    	test_licence()
    tu peu changer les valeur de p_cle et p_cle_2

    ensuite tu cree les procedure globales suivantes
    (dans le ca present la clé est stoke dans un fichier ini dans le repertoire c:\windows. à toi de voire si tu veu le mettre dans la base de régistre)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    PROCEDURE test_licence()
    saisieok est un booléen
    num_lic est une chaîne= INILit("CONNECTION","LICENCE","",SysRep()+"\LPERFECT.INI")
     
    SI SansEspace(num_lic) = "" ALORS
    	SI PAS Ouvre(flicence) ALORS
    		Erreur("Ce programme va s'arrêter car vous ne disposez pas de numéro de licence pour cette machine."+RC+RC+"Si vous avez perdu votre numéro de licence ou changer de machine, veuillez nous recontacter en précisant le numéro d'identification de votre machine.")
    		FinProgramme()
    	FIN
    FIN
    SI SansEspace(Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle2),1,2)+"-"+Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle),2,5)+"-"+Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle2),6)) <> SansEspace(num_lic) ALORS
    	SI PAS Ouvre("flicence") ALORS
    		Erreur("Ce programme va s'arrêter car vous ne disposez pas de numéro de licence valide pour cette machine."+RC+RC+"Si vous avez perdu votre numéro de licence ou changé de machine, veuillez contacter SOCIETE X en précisant le numéro d'identification de votre machine.")
    		FinProgramme()
    	FIN
    FIN
     
     
    FONCTION codetxt(Texte, Cle)
    TexteCode est une chaîne=""
    LettreCode est un caractère
    TailleTexte, TailleCle sont des entiers=0
    IndiceLettreCle est un entier
    ValLettreCode est un entier
    //p indice est un entier
     
    TailleTexte=Taille(Texte)
    TailleCle=Taille(Cle)
     
    SI (TailleTexte<>0) ET (TailleCle<>0) ALORS
               //Au moins un caractère à codé avec une clé d'au moins un caractère
    POUR indice=1 A TailleTexte
            //Calcul de l'indice de la lettre de la clé à utiliser
            IndiceLettreCle=modulo(indice, TailleCle)
           SI IndiceLettreCle=0 ALORS
                   IndiceLettreCle=TailleCle
                       FIN
                      //Calcul de la valeur ASCII de la lettre codée
                     ValLettreCode=modulo(Asc(Texte[[indice]])+Asc(Cle[[IndiceLettreCle]]),256)
                     //Ajout de la lettre codée dans le texte codé
                     LettreCode=Caract(ValLettreCode)
                     TexteCode=TexteCode+LettreCode
               FIN
    FIN
    //SINON Texte ou clé inéxistant
    RENVOYER TexteCode	
     
     
    PROCEDURE numserial(sDrive)
    LOCAL
    iTestOk est un entier  
    sVolumeName est une chaîne ASCIIZ sur 100
    iVolumeSerial  est un entier     
    iMaxComponentLength est un entier     
    iFileSystemFlags  est un entier     
    sFileNameBuffer est une chaîne ASCIIZ sur 10
    Drive est un entier  
    Drive=fCurrentDrive(sDrive)
    iTestOk= CallDLL32("Kernel32","GetVolumeInformationA",...
    			     Drive,...
    			    &sVolumeName,...
    			    100,...
    			    &iVolumeSerial,...
    			    &iMaxComponentLength,...
    			    &iFileSystemFlags,...
    			    &sFileNameBuffer,10)
    SI iTestOk=1 ALORS
    	RENVOYER iVolumeSerial
    SINON
    	RENVOYER 0
    FIN
     
     
    tu cree ensuite une fenetre flicence avec deux champ 
     
    un ou le numeros la cle que l'utilisateur devra te commun,iquer s'affichera et un autre ou il devra saisir la licenceque tu va générer
    tu devra avoir egalement un bouton valider et fermer
    code bouton valider
    SI SansEspace(Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle2),1,2)+"-"+Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle),2,5)+"-"+Milieu(codetxt(NumériqueVersChaine(numserial("c:")),p_cle2),6)) <> SansEspace(NUM_LIC) ALORS
    	Erreur("Le numéro de licence saisi est incorrect.")
    	RepriseSaisie("num_lic")
    SINON
    	Info("Merci d'avoir choisi .........")
    	création_ini est un booléen= INIEcrit("CONNECTION", "LICENCE",NUM_LIC,SysRep()+"\LPERFECT.INI") 
    	Ferme(flicence,Vrai)
    FIN
    code bouton fermer
    enfin tu devra avoir une fenetre pour generer la licence par rapport à la clé que le client va te fournir. inspire toi de la fenentre flicence.

    je t'en ai trop donner. abonne toi au lst de pcsoft. c'est tres riche (ceci et tire je ne sais pas mais d'un lts de windev 5 ou 7. vieux n'est ce pas)

    a bientot

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/09/2009, 11h54
  2. Réponses: 0
    Dernier message: 15/09/2009, 16h01
  3. [ControlBuild] Version de démo
    Par vincentx dans le forum Autres langages
    Réponses: 3
    Dernier message: 20/03/2007, 18h03
  4. Réponses: 3
    Dernier message: 26/01/2007, 09h51
  5. [DB2] Version Démo
    Par borgfabr dans le forum DB2
    Réponses: 4
    Dernier message: 26/12/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo