1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Stcké une clé

Discussion dans 'Sujets Divers' créé par faq, Fev 25, 2020.

  1. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Bonjour

    Je veux enregistrer la clé d'activation sur l'ordinateur client, chaque fois que nous démarrons notre application, elle devrait vérifier si cet ordinateur possède déjà une clé d'activation selon de votre expérience professionnelle, où puis-je stocker cette clé?Dans le registre, dans la base de données HFCS ou dans le fichier INI.
    Comment supprimer cette clé de l'ordinateur client, si nécessaire, par programmation?

    Merci pour votre aide
     
    Tags:
  2. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    L'idéal, pour moi, serait d'enregistrer cette clé dans un fichier protégé par mot de passe. La supprimer équivaut à supprimer l'enregistrement ou le mettre à zéro.
    Sinon tu peux enregistrer ta clé dans la base de registre mais dans les deux cas tu dois accompagner ta clé d'une valeur d'identification propre à la machine sur laquelle est enregistré l'application. De cette façon, l'application ne fonctionnera que sur ce pc. Une piste... fouiller comment récupérer l'UUID du pc.
     
  3. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    pour ton retour

    L'enregistrement dans la BDD , tu dois lire le fichier contenant la clé et dans ce cas tu dois lancé l'application puis tu vérifié la clé

    Autre cas il faudrait redonner une clé d'activation si on venait à changer de base de données. n'est ce pas ?

    Pour le cas du registre, il y a des problèmes avec la version Windows. Cela signifie qu'à chaque nouvelle version, il y a un changement dans les chemins et les propriétés qui ont été supprimées....

    A plus
     
  4. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Pour lire la clé que ce soit de la BDD ou de la BDR, il faut d'abord lancer l'application, cela va de soi.
    Pourquoi changer de BDD? Il me semble qu'une application "vendue" doit être finie (donc structure de BDD finalisée).
    Pour la BDR, il n'y pas de problèmes. Il faut juste choisir la position de la clé et WD gère bien les seules difficultés qui peuvent survenir entre une appli x86 ou 64bits.
     
  5. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Le fichier, qui contient la clé, est protégé contre la lecture mais n'est pas protégé contre la suppression
    C'est pour cela je cherche la fonction WD ou une méthode qui permet de cacher ce fichier ?

    Est ce possible ?
     
  6. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Je sais que tu as écrit :
    Je veux enregistrer la clé d'activation sur l'ordinateur client

    Mais bon... :p

    Un webservice ne pourrait pas fonctionner pour ton application ?
    La licence est associé au compte.
    Tu peux lui permettre de relâcher une licence pour la réinstaller sur un autre poste (ou d'avoir un nombre de poste maximum pour une licence, exemple qu'il installe sur son pc et sur son portable ou téléphone)
    Tu peux valider si le compte à lancer une application plus d'une fois et le déconnecter si ça arrive.
    Tu peux avoir un abonnement pour X licence lancer en même temps, ce qui peut être intéressant pour l'utilisateur (selon le type d'application bien sur)
    Tu peux gérer toute tes applications à partir du même webservice.

    Si l'utilisateur est pas connecter à internet tu lui permet d'ouvrir l'application X fois hors ligne avant de devoir revalider que ça licence est encore valide.

    Je sais que c'est un peu plus lourd à faire, mais je crois que ça en vaut la peine de le faire une fois pour toutes tes applications, tu en sera gagnant au bout de la ligne.

    Tant que tu gère la licence directement la licence sur le poste, tu devra toujours avoir un lien directe avec le client et un support en arrière de ça.

    Tu dois stocker une clé en quelque part qui est supprimable par l'utilisateur d'une manière ou d'une autre, que ce soit .ini, BDD ou registre, l'utilisateur pourra toujours faire quelque chose qui rendra sont application inutilisable.
    Si tu récupère un identifiant du poste en cours, il ne pourra pas transférer l'application de poste sans que tu n'intervienne non plus.

    Je n'ai pas encore trouvé de manière fiable de stocker une licence sur un poste client. Mais bon... je me suis pas trop attarder sur le sujet non plus.
     
  7. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    pour ton retour

    Oui j'utilise le WS
    J'ai utilisé également les BDR et .ini mais vu le changement de version de windows et 32bit vers 64 bits ça me pose des problèmes au niveau des chemins et autres

    Par exemple la position de la clé dans la base de registre (BDR) ne garde pas le même chemin entre les version windows 7,8,10,2012,2016,...

    Pour le fichier( ini ) on peut avoir des problèmes d'écritures si l'on est dans un répertoire protégé (program files par exemple).

    Pour l’identifiant de poste je vais baser sur les numéros de série(HDD, carte mère ou BIOS) même après le formatage il garde leurs anciens numéros.

    Alors j'ai choisi finalement d’utiliser la BDD. C'est pour ça je te demande est ce possible d'interdire la suppression d'un fichier depuis la BDD ?
     
  8. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,882
    J'aime reçus:
    1,532
    Tu ne peux pas interdire la suppression de fichier car c'est Windows qui le gère.

    Par contre j'ai un ami qui réussi à modifier son exe pour qu'il ajoute à la fin de celui-ci un texte, il est aussi possible d'ajouter d'autres fichiers dans l'exe.
    Tout cela avec les fonctions de windev et les api de Windows.
    Il n'as bien sur pas voulu me donner son code.
    En tout cas c'est une piste.
     
  9. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , si le client supprime le fichier, il perd sa licence.
    Ce que j'ai fais pour protéger mes programmes: à la première exécution du programme, il cherche le fichier licence qui contient les infos du pc. Si c'est bon, il continue sinon une erreur est générée demandant au client d'envoyer un mail (ce qui est le plus simple) contenant un fichier contenant les infos du pc (cryptés). Je reçois le mail et je génère une clé que je lui envoie. A la prochaine utilisation du programme, il introduit la clé et ça fonctionne. A toi de gérer les clients et leur demandes de licences.
    Il y a aussi la solution de

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    qui est moins contraignante pour ton client mais qui nécessite un serveur de ton côté.
     
  10. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    si tu utilise WS tu pourra construire un système d'activation online
    la base de donnée qui stockera les id de tes utilisateur et leurs codes d"activation avec la date sera sur ton serveur de ton webservice créer
     
  11. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Merci de vos retours

    Donc on ne peut même cacher ce fichier puisque la suppression est impossible !

    Une autre question, après le formatage d'un PC est ce que le HDD ou la carte mère ne perdent pas leurs numéros de séries ?
     
  12. WX1331

    WX1331 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    610
    J'aime reçus:
    670
    Si le numéro constructeur de HDD ou carte mére alors la réponse est non
     
  13. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Mais attention je ne parle pas du nom de volume de HDD !
     
  14. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    avec api windows ou wmi
     
  15. WX1331

    WX1331 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    610
    J'aime reçus:
    670
    Exactement il existe une classe dans un exemple de windev qui utilise WMI pour avoir tous ça (Serial Consutcteur de HDD, USB, ) carte mére, Carte réseau, ect...

    salutations
     
  16. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    572
    J'aime reçus:
    863
    Voici un petit but de code qui reprend assez bien d'infos ...
    Je ne sais plus qui est l'auteur du code initial, tout ce que je peux vous dire c'est que j'y ai ajouté quelques infos
    En Espérant que cela puisse être utile au Forum :)

    STRUCT_Board_Infos est Structure
    NumSerieDisque est chaîne
    NumVolDisque est chaîne
    NumMacAdresse est chaîne
    NomManufacturier est chaîne
    NomCarteMere est chaîne
    NumSerieCarteMere est chaîne
    NumSerieBios est chaîne
    TypeProcesseur est chaîne
    NumSerieProcesseur est chaîne
    Erreur_WMI est booléen
    FIN

    FONCTION System_BoardInfos(p_Trace est booléen = Vrai) : STRUCT_Board_Infos

    LOCAL
    oLocator est objet Automation"WbemScripting.SWbemLocator"
    oService est objet Automation dynamique
    oBoard est objet Automation dynamique
    oBios est objet Automation dynamique
    stBoard_Infos est STRUCT_Board_Infos

    QUAND EXCEPTION DANS

    oService= oLocator>>ConnectServer(".","root\cimv2")
    oService>>Security_>>ImpersonationLevel = 3

    // Récupération du numéro de série du 1er disque
    oBoard= oService>>ExecQuery("SELECT SerialNumber,Tag FROM Win32_PhysicalMedia WHERE Tag LIKE '%PHYSICALDRIVE0'")
    POUR x=0_À_ oBoard>>Count-1
    stBoard_Infos.NumSérieDisque=oBoard>>ItemIndex(x)>>Properties_>>Item("SerialNumber")>>Value
    SI p_Trace ALORS Trace("NumSérieDisque : ",stBoard_Infos.NumSérieDisque)
    FIN

    // Récupération du numéro de volume du disque C:
    oBoard= oService>>ExecQuery("SELECT DeviceID,VolumeSerialNumber FROM Win32_LogicalDisk WHERE DeviceID='C:'")
    POUR x= 0 _À_ oBoard>>Count-1
    stBoard_Infos.NumVolDisque= oBoard>>ItemIndex(x)>>Properties_>>Item("VolumeSerialNumber")>>Value
    SI p_Trace ALORS Trace("NumVolDisque : ",stBoard_Infos.NumVolDisque)
    FIN

    // Récupération de l'adresse MAC des adaptateurs réseau valides
    oBoard= oService>>ExecQuery("SELECT MACAddress,PhysicalAdapter FROM Win32_NetworkAdapter WHERE PhysicalAdapter=True")
    POUR x = 0 _À_ oBoard>>Count-1
    stBoard_Infos.NumMacAdresse= oBoard>>ItemIndex(x)>>Properties_>>Item("MACAddress")>>Value
    SI p_Trace ALORS Trace("NumMacAdresse : ",stBoard_Infos.NumMacAdresse)
    FIN

    // Récupération du numéro de série et du nom de carte mère
    oBoard= oService>>ExecQuery("select * from Win32_BaseBoard")
    stBoard_Infos.NomManufacturier = oBoard>>ItemIndex(0)>>Properties_>>Item("Manufacturer")>>Value
    SI p_Trace ALORS Trace("NomManufacturier : ",stBoard_Infos.NomManufacturier)

    oBoard= oService>>ExecQuery("SELECT SerialNumber,Product FROM Win32_BaseBoard")
    POUR x= 0 _À_ oBoard>>Count-1
    stBoard_Infos.NomCarteMere = oBoard>>ItemIndex(x)>>Properties_>>Item("Product")>>Value
    stBoard_Infos.NumSérieCarteMère = oBoard>>ItemIndex(x)>>Properties_>>Item("SerialNumber")>>Value
    SI p_Trace ALORS
    Trace("NomCarteMère : ",stBoard_Infos.NomCarteMere)
    Trace("NumSérieCarteMère : ",stBoard_Infos.NumSérieCarteMère)
    FIN
    FIN

    // Récupération du numéro de série du BIOS
    // oBoard= oService>>ExecQuery("SELECT SerialNumber FROM Win32_BIOS")
    // POUR x= 0 _A_ oBoard>>Count-1
    // stBoard_Infos.NumSérieBios= oBoard>>ItemIndex(x)>>Properties_>>Item("SerialNumber")>>Value
    // SI p_Trace ALORS Trace("NumSérieBios : ",stBoard_Infos.NumSérieBios)
    // FIN
    oBios = oService>>ExecQuery("select * from Win32_BIOS")
    SI oBios>>Count > 0 ALORS
    stBoard_Infos.NumSérieBios= oBios>>ItemIndex(0)>>Properties_>>Item("SerialNumber")>>Value
    SI p_Trace ALORS Trace("NumSérieBios : ",stBoard_Infos.NumSérieBios)
    FIN

    // Récupération Type de processeur
    stBoard_Infos.TypeProcesseur = SansEspace(RegistreLit("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0","Identifier"))
    SI p_Trace ALORS Trace("TypeProcesseur : ",stBoard_Infos.TypeProcesseur)

    // Récupération SN du processeur
    oBoard= oService>>ExecQuery("SELECT ProcessorID FROM Win32_Processor")
    SI oBoard>>Count > 0 ALORS
    stBoard_Infos.NumSerieProcesseur = oBoard>>ItemIndex(0)>>Properties_>>Item("ProcessorID")>>Value
    SI p_Trace ALORS Trace("NSerProcesseur : ",stBoard_Infos.NumSerieProcesseur)
    FIN

    FAIRE
    SI p_Trace ALORS
    Erreur("Erreur exécution WMI",ExceptionInfo(errInfo))
    ExceptionActive()
    VariableRAZ(stBoard_Infos)
    stBoard_Infos.Erreur_WMI = Vrai
    Trace("Erreur WMI ")
    FIN
    FIN
    libérer(oBios)
    libérer(oBoard)
    libérer(oService)

    RENVOYER(stBoard_Infos)


    Bon développement

    Gemini
     
    PhantomX, Man, michel et 1 autre personne aiment ça.

Partager cette page

Chargement...