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 :

récupérer la clé d'installation de Windows (DigitalProductId) [WD18]


Sujet :

WinDev

  1. #1
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut récupérer la clé d'installation de Windows (DigitalProductId)
    bonjour,

    je souhaite récupérer la clé d'installation de Windows (DigitalProductId) en utilisant un programme WinDev compilé en 32 bits pouvant être installer sur OS Windows 32/64 bits.

    j'ai récupérer le script VBS suivant :

    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
     
    Set WshShell = CreateObject("WScript.Shell")
    MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
     
    Function ConvertToKey(Key)
        Const KeyOffset = 52
        i = 28
        Chars = "BCDFGHJKMPQRTVWXY2346789"
        Do
            Cur = 0
            x = 14
            Do
                Cur = Cur * 256
                Cur = Key(x + KeyOffset) + Cur
                Key(x + KeyOffset) = (Cur \ 24) And 255
                Cur = Cur Mod 24
                x = x -1
            Loop While x >= 0
            i = i -1
            KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
            If (((29 - i) Mod 6) = 0) And (i <> -1) Then
                i = i -1
                KeyOutput = "-" & KeyOutput
            End If
        Loop While i >= 0
        ConvertToKey = KeyOutput
    End Function
    ce script fonctionne parfaitement lorsque je l'exécute depuis un fichier *.vbs, quelque soit l'OS.

    j'ai dans un 1er temps essayer de traduire ce code en Wlangage mais je n'y suis pas arrivé en ce qui concerne la partie "conversion".

    j'ai ensuite mis le script dans le code en utilisant un objet automation "MSScriptControl.ScriptControl"

    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
     
    autScriptVBS			est un objet Automation "MSScriptControl.ScriptControl"
    szScriptVBS 			est une chaîne
     
    szScriptVBS = [
    	FUNCTION ConvertToKey()
    		Set WshShell = CreateObject("WScript.Shell")
    		Key = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
    		Const KeyOffset = 52
    		i = 28
    		Chars = "BCDFGHJKMPQRTVWXY2346789"
    		DO
    				Cur = 0
    				x = 14
    				DO
    					Cur = Cur * 256
    					Cur = Key(x + KeyOffset) + Cur
    					Key(x + KeyOffset) = (Cur \ 24) AND 255
    					Cur = Cur Mod 24
    					x = x -1
    				LOOP WHILE x >= 0
    			i = i -1
    			KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
    			IF (((29 - i) Mod 6) = 0) AND (i <> -1) THEN
    			i = i -1
    			KeyOutput = "-" & KeyOutput
    			END IF
    		LOOP WHILE i >= 0
    		ConvertToKey = KeyOutput
    	END FUNCTION
    ]
    autScriptVBS>>Language("VBScript")
    autScriptVBS>>Reset
    autScriptVBS>>AddCode(szscriptvbs)
    autScriptVBS>>Timeout(-1)
    szKey est chaîne = autScriptVBS>>Run("ConvertToKey")
    Info(szKey)
    Dans la configuration suivante (Exe WD 32 bits / OS 32 bits) ce code fonctionne parfaitement
    Dans la configuration suivante (Exe WD 32 bits / OS 64 bits) j'obtiens un erreur me disant que "MSScriptControl.ScriptControl" n'est pas installé sur ma machine

    bref je tourne en rond

    est ce que quelqu'un aurait une solution à me proposer, dans la mesure du possible en Wlangage uniquement.

    merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Bonjour,

    Je n'ai pas examiné les codes que vous soumettez parce que j'ai une proposition à vous faire.

    Faites une recherche sur ce Forum et sur celui de PC Soft, la question que vous soulevez y a déjà été abordée à plusieurs reprises.

    Bonne recherche

    Hemgé

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    Merci de votre réponse tout fait inutile

    car :

    1 - j'ai déjà fait ces recherches et à aucun moment je n'ai trouver comment exécuter un script vbs en utilisant "MSScriptControl.ScriptControl" sur OS 64 bits
    2 - qui contient un appel à une clé de registre dépendante de la version de l'OS (32/64 bits) avec un prog WinDev 32 bits
    3 - si vous consultiez plus souvent les newsgroups officiel ou non vous auriez constaté que la question a été posé mais qu'elle est toujours sans réponse par moi et une autre personne
    4 - c'est un peu pour ce genre de réponse que la plupart du temps je ne poste pas ici

  4. #4
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    bonjour,
    voici une réponse complètement nulle et inutile :

    chez moi sur un os 64 bits (windows 7) avec un executable 32 bits l'objet Automation "MSScriptControl.ScriptControl" est reconnu par contre avec un executable 64 bits il n'est pas reconnu ce qui me semble normal car MSScriptControl.Scriptcontrol est un objet 32 bits voir ici

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    bonjour,

    merci de votre sollicitude entre temps j'ai trouvé la réponse

    en ce qui concerne MSScriptControl.Scriptcontrol vous avez raison c'est moi qui me suit tromper dans ma rédaction

    en resumé j'aurais du écrire :

    prog WinDev 32 bits / OS 32 bits => OK
    prog WinDev 32 bits / OS 64 bits => KO pour clé de registre non accessible (redirection vers une clé Wow6432Node)
    prog WinDev 64 bits / OS 64 bits => KO pour impossibilité d'utiliser MSScriptControl.Scriptcontrol

    j'ai tellement fait de test (ces 3 derniers jours) dans différentes configurations que j'ai fini par croiser mes mots (certes ce n'est pas une excuse mais une explication)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Citation Envoyé par JeAn-PhI Voir le message
    merci de votre réponse tout fait inutile

    car :

    1 - j'ai déjà fait ces recherches et à aucun moment je n'ai trouver comment exécuter un script vbs en utilisant "MSScriptControl.ScriptControl" sur OS 64 bits
    2 - qui contient un appel à une clé de registre dépendante de la version de l'OS (32/64 bits) avec un prog WinDev 32 bits
    3 - si vous consultiez plus souvent les newsgroups officiel ou non vous auriez constaté que la question a été posé mais qu'elle est toujours sans réponse par moi et une autre personne
    4 - c'est un peu pour ce genre de réponse que la plupart du temps je ne poste pas ici
    D'autres auraient répondu dans le style : j'ai déjà fait ces recherches, ou relativement récemment, que c'étaient en fait leur post qu'on évoquait.
    Mais entre eux et vous, il y a une marge en matière de courtoisie et de savoir-vivre.
    Très certainement

    • Vous devriez comprendre que si vous posez une question de but en blanc, on commence par vous indiquez la solution la plus efficace et la plus rapide à première vue.
    • Vous devriez aussi comprendre que je ne tienne pas à jour un registre des réponses de chacun aux divers forums. En fonction de quoi, vous devriez absoudre la faute impardonnable de ne pas avoir mémorisé vos interventions dans tel, tel et tel sujet.
    • Vous devriez aussi comprendre que si vous n'indiquez pas à vos lecteurs que vous avez déjà effectué telle ou telle recherche, comme certains ont l'amabilité et la correction de le faire, vous les piégez et les amenez à vous faire une réponse "tout à fait inutile" quoique de bonne foi et exacte puisque vous confirmez que le sujet a bien été abordé. Ne recevoir qu'une piste serait donc insuffisant à vos yeux ?
    • Vous devriez aussi comprendre que je m'efforce de vous délivrer une information exacte, vous laissant le soin de l'examiner et de juger de son utilité.
    • Vous devriez aussi comprendre qu'agresser les gens ne sert qu'à vous isoler dans une communauté où seule la bonne volonté les amène à vous aider ou à tenter de vous aider. Et votre attitude en incitera d'autres que moi à vous considérer avec circonspection. Oui, certains finiront par retenir votre pseudo, mais sans doute de manière négative.
    • Vous devriez aussi comprendre que vous semblez tellement déconsidérer ce Forum qu'on se demande pourquoi vous condescendez encore à le fréquenter et sans doute à le consulter. On ne crache pas dans la soupière qu'on veut partager, me semble-t-il, ou alors j'ignore tout de cette coutume.



    Voilà, Monsieur JeAn-PhI l'Invectiveur, tout ce qu'il y a à vous répondre.

    Pour le reste le Forum est libre d'accès, même pour vous.

    Hemgé

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    1 - quelle solution efficace ? faire une recherche ?
    2 - moi non plus je ne tiens pas de registre mais je connais au moins les contributeurs les plus assidus du forum pc soft
    3 - effectivement vous avez raison, mais désolé de faire parti de ceux qui pose une question en ayant fait tous les pré requis nécessaire (recherche, etc.) avant de poster, effectivement la coutume veut que l'on pose la question avant de faire un minimum de recherche
    4 - cf. 1
    5 - désolé de vous avoir paru agressif mais ce n'était pas le but rechercher, je me doute que vous devez voir pas mal de questions posées ici sans que l'initiateur de la question ait fait un minimum de recherche.
    6 - encore un fois j'aurais du développer, méa culpa, ce n'est pas ce forum en particulier mais le format trop laborieux à suivre (forum web vs newsgroup) désolé d'être un vieux con mais j'ai une préférence pour les newsgroup car plus condensé. à chaque fois que j'ai posé une question sur un forum web au lieu de répondre à la question positivement ou négativement peu importe on m'a fait une réponse du genre "faites une recherche", encore une fois je n'ai nul besoin qu'on me le dise pour le faire

    a tout fin utile, je n'ai été ni violent ni injurieux (cf. définition de invectiver) ou alors nous n'avons la même définition de violence et d'injure, je veux bien vous concéder agressif (cf. 5) mais j'étais plutôt consterner par une RALC (© bellamyjc)

    pour ma part l'incident est clos

    merci

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Merci pour cette réponse raisonnable.

    L'incident est clos pour moi également et je retire le mot invectiveur qui effectivement dépassait ma pensée.

    Donc, à d'autres rencontres plus sereines.

    Hemgé

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello,

    encore une réponse inutile et qui ne sera peut-être pas lue :

    tu peux récupérer la la clé d'installation de Windows (DigitalProductId) en wlangage avec un truc du genre :

    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
    bufBuffer est un Buffer sur 2048
    HKEY_LOCAL_MACHINE est un entier = 0x80000002
    KEY_QUERY_VALUE est un entier = 0x1
    KEY_WOW64_64KEY est un entier = 0x0100
    RetourFonction est un entier // Type C :LONG
    phkResult est un entier système // Type C :PHKEY
    lpcbData est un entier système
    lpcbData = 2048
    i,j sont des entiers
    keyStartIndex est un entier = 53
    keyEndIndex est un entier =  keyStartIndex + 15
    decodeLength est un entier = 29
    decodeStringLength est un entier =  15
    decodedChars est un Buffer sur 29 octets
    hexPid  est un tableau dynamique d' octets
    digits est un Buffer   = "BCDFGHJKMPQRTVWXY2346789"
     
    RetourFonction=API("ADVAPI32.DLL","RegOpenKeyExA",HKEY_LOCAL_MACHINE, ...
    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_QUERY_VALUE | 
    KEY_WOW64_64KEY,&phkResult)
    RetourFonction=API("ADVAPI32.DLL","RegQueryValueExA",phkResult, 
    "DigitalProductId",0,0,&bufBuffer,&lpcbData)
     
    POUR i = keyStartIndex A keyEndIndex
        TableauAjoute(hexPid,bufBuffer[[i]])	
    FIN
    	POUR i = decodeLength  A 1 PAS -1
     
    		SI (modulo(i,6) = 0)			
    			decodedChars[[i]]= Asc("-")			
    		SINON
    			digitMapIndex est un entier =  0
    			POUR j = decodeStringLength  A 1 PAS -1 
    				 byteValue  est un entier = bitDécaleGauche(digitMapIndex,8) | hexPid[j]				 
    			   	 hexPid[j] = byteValue / 24
    				digitMapIndex = modulo(byteValue,24)
    				decodedChars[[i]] = digits[[digitMapIndex+1]]
    			FIN
    		FIN
    	FIN
     
    Trace (decodedChars)
    - utilisation des api windows pour lire les clés de registres car registrelit ne fonctionne pas dans tous les cas de figures.

    Ami calmant, J.P

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Excellent JP !
    Quand j'ai vu le post j'ai cherché du coté des API (je me noie dedans en ce moment) mais je n'avais rien trouvé...

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    Merci JP, non elle n'est pas inutile, je me doutais bien que la réponse viendrait de toi mais je pensais la voir directement sur le forum de PcSoft.

    ta solution me convient mieux car full WLangage

    en fait il me manquait la transfo buffer vers tableau d'octet (quel naze je n'ai pas essayer cette solution), pour le reste j'avais trouver un code quasi identique en .NET, j'y étais presque

    voilà ce que j'ai pu trouver comme solution
    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
     
    szScriptVBS				est une chaîne
    autScriptVBS			est un objet Automation "MSScriptControl.ScriptControl"
     
    szScriptVBS = [
    	FUNCTION ConvertToKey(ArchOs)
    		Const HKLM = &H80000002
    		Arch_OS = ArchOS
    		Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
    		Select CASE Arch_OS
    			CASE "32", ""
    				objCtx.ADD "__ProviderArchitecture", 32
    			CASE "64"
    				objCtx.ADD "__ProviderArchitecture", 64
    		END Select
    		Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
    		Set objServices = objLocator.ConnectServer(strComputer,"root\default","","",,,,objCtx)
    		Set objStdRegProv = objServices.Get("StdRegProv")
    		Set Inparams = objStdRegProv.Methods_("GetBinaryValue").Inparameters
    		Inparams.Hdefkey = HKLM
    		Inparams.Ssubkeyname = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    		Inparams.Svaluename = "DigitalProductId"
    		Set Outparams = objStdRegProv.ExecMethod_("GetBinaryValue", Inparams,,objCtx)
    		Key = Outparams.uValue
    		Const KeyOffset = 52
    		i = 28
    		Chars = "BCDFGHJKMPQRTVWXY2346789"
    		DO
    			Cur = 0
    			x = 14
    			DO
    				Cur = Cur * 256
    				Cur = Key(x + KeyOffset) + Cur
    				Key(x + KeyOffset) = (Cur \ 24) AND 255
    				Cur = Cur Mod 24
    				x = x -1
    			LOOP WHILE x >= 0
    			i = i -1
    			KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
    			IF (((29 - i) Mod 6) = 0) AND (i <> -1) THEN
    				i = i -1
    				KeyOutput = "-" & KeyOutput
    			END IF
    		LOOP WHILE i >= 0
    		ConvertToKey = KeyOutput
    	END FUNCTION
    ]
    szArchOS est une chaîne = SysVersionWindows(sysProcesseur)
     
     
    autScriptVBS>>Language("VBScript")
    autScriptVBS>>Reset
    autScriptVBS>>AddCode(szScriptVBS)
    autScriptVBS>>Timeout(-1)
    szKey est chaîne = autScriptVBS>>Run("ConvertToKey",szArchOS)
    Info(szKey)

  12. #12
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    Bonjour,

    Ce code fonctionne-t-il pour les clés OEM ?


  13. #13
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Non il se base sur des API Windows + base de registre... (à moins que ton équipement embarque un OS Windows ce qui me parait peut probable)

  14. #14
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    Citation Envoyé par Tchupacabra Voir le message
    Bonjour,

    Ce code fonctionne-t-il pour les clés OEM ?

    c'est à dire ?

    mon poste avec windows xp ou 7 sont en OEM (d'après la valeur ProductID de cette même clé)

    définition microsoft :
    L'entrée de Registre DigitalProductId contient la valeur REG_BINARY codée de la clé de produit qui a été utilisée pour activer le produit logiciel.

  15. #15
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    Nous avons essayé de récupérer toutes les licences Windows + Office sur un parc informatique de 250 postes avec différents logiciels...
    Aucun de ces logiciels très connus n'arrive à remonter les clés OEM.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 194
    Par défaut
    bonjour,

    pouvez vous faire le test avec Wininfokeys de pierre torris (http://www.ptorris.com/download.php?file=winfokeys.zip)
    et me dire quelle valeur vous voulez récupérer (la valeur verte ou rouge)

    Nom : Sans titre.jpg
Affichages : 2121
Taille : 50,0 Ko

    pour la verte c'est productid et la rouge c'est digitalproductid

  17. #17
    Membre émérite
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Par défaut
    Salut!

    Moi je récupère la valeur rouge (clé d'install) qui se trouve être pareil sur plusieurs PC.

    Avez vous réussi à retrouver l'install id?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 14
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,

    encore une réponse inutile et qui ne sera peut-être pas lue :

    tu peux récupérer la la clé d'installation de Windows (DigitalProductId) en wlangage avec un truc du genre :

    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
    bufBuffer est un Buffer sur 2048
    HKEY_LOCAL_MACHINE est un entier = 0x80000002
    KEY_QUERY_VALUE est un entier = 0x1
    KEY_WOW64_64KEY est un entier = 0x0100
    RetourFonction est un entier // Type C :LONG
    phkResult est un entier système // Type C :PHKEY
    lpcbData est un entier système
    lpcbData = 2048
    i,j sont des entiers
    keyStartIndex est un entier = 53
    keyEndIndex est un entier =  keyStartIndex + 15
    decodeLength est un entier = 29
    decodeStringLength est un entier =  15
    decodedChars est un Buffer sur 29 octets
    hexPid  est un tableau dynamique d' octets
    digits est un Buffer   = "BCDFGHJKMPQRTVWXY2346789"
     
    RetourFonction=API("ADVAPI32.DLL","RegOpenKeyExA",HKEY_LOCAL_MACHINE, ...
    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_QUERY_VALUE | 
    KEY_WOW64_64KEY,&phkResult)
    RetourFonction=API("ADVAPI32.DLL","RegQueryValueExA",phkResult, 
    "DigitalProductId",0,0,&bufBuffer,&lpcbData)
     
    POUR i = keyStartIndex A keyEndIndex
        TableauAjoute(hexPid,bufBuffer[[i]])	
    FIN
    	POUR i = decodeLength  A 1 PAS -1
     
    		SI (modulo(i,6) = 0)			
    			decodedChars[[i]]= Asc("-")			
    		SINON
    			digitMapIndex est un entier =  0
    			POUR j = decodeStringLength  A 1 PAS -1 
    				 byteValue  est un entier = bitDécaleGauche(digitMapIndex,8) | hexPid[j]				 
    			   	 hexPid[j] = byteValue / 24
    				digitMapIndex = modulo(byteValue,24)
    				decodedChars[[i]] = digits[[digitMapIndex+1]]
    			FIN
    		FIN
    	FIN
     
    Trace (decodedChars)
    - utilisation des api windows pour lire les clés de registres car registrelit ne fonctionne pas dans tous les cas de figures.

    Ami calmant, J.P

    Bonjour J.P.

    Merci pour ce bout de code qui va m'être très utile pour servir de base à la protection d'un de mes logiciels.

    Du coup j'ai deux questions.

    1- Quels sont les cas possibles où le product key généré risque de changer.

    2 - Dans le code exécuté, j'ai un avertissement sur la ligne 2 (Dépassement de capacité lors de l'affectation.)

    Nom : 2024-05-17_11-42-35.png
Affichages : 296
Taille : 28,3 Ko

    Je suis en WD27 sous Windows 10.
    - Sauriez-vous quelle modification apporter pour éviter ce warning ?


    Merci BEAUCOUP.

  19. #19
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Par défaut
    Citation Envoyé par Starski Voir le message
    Je suis en WD27 sous Windows 10.
    - Sauriez-vous quelle modification apporter pour éviter ce warning ?
    Bonjour

    Augmenter la taille de la variable, par exemple en la passant en entier système

  20. #20
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 518
    Par défaut
    Bonjour,

    Pourquoi exhumer un fil de discussion vieux de 10 ans ? Tu aurais dû en créer un nouveau et mettre celui-ci en lien : ce n'est pas le même os et pas la même version de windev...

    1. Concernant les changements potentiels de cette clé, je te conseille de poser la question.
    2. Concernant le code. Et bien vu ce que j'ai dit en préambule, tu devrais peut-être essayer registrelit... quant à l'erreur proprement dite, elle est explicite.. Je pense que tu essayes de mettre qq chose de trop grand dans ta variable.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. PERL et installation sous windows de DBI
    Par Kath dans le forum SGBD
    Réponses: 4
    Dernier message: 14/07/2006, 11h34
  2. Récupérer la clé d'installation d'un Windows 2000
    Par Mut dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 18/04/2006, 01h05
  3. installation native windows xp
    Par Mathusalem dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 11/02/2005, 12h52
  4. [Débutant] Problème d'installation sous Windows 2000
    Par bavmorda dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 04/08/2004, 16h28
  5. [install]Install sous windows... quelques questions
    Par omega dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/02/2004, 09h50

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