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

DEMANDE [RÉSOLU] Traduction code VBS (Récuperer Product Key Windows) en windev

Discussion dans 'Résolution problème & conseils' créé par popoy, Fev 6, 2019.

  1. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,532
    Bonjour a tous,
    Voici un code Visual Basic Scripte pour récupérer la Clé de Windows.
    J'essaie de le traduire en windev.
    Le code VBS:
    Code (Text):
    Public Function sGetXPCDKey()
    Dim bDigitalProductID
    Dim bProductKey()
    Dim bKeyChars(24)
    Dim ilByte
    Dim nCur
    Dim sCDKey
    Dim ilKeyByte
    Dim ilBit

    ReDim Preserve bProductKey(14)

    Set objShell = CreateObject("WScript.Shell")

    bDigitalProductID = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductID")

    Set objShell = Nothing

    For ilByte = 52 To 66
    bProductKey(ilByte - 52) = bDigitalProductID(ilByte)
    Next

    'Possible characters in the CD Key:
    bKeyChars(0) = Asc("B")
    bKeyChars(1) = Asc("C")
    bKeyChars(2) = Asc("D")
    bKeyChars(3) = Asc("F")
    bKeyChars(4) = Asc("G")
    bKeyChars(5) = Asc("H")
    bKeyChars(6) = Asc("J")
    bKeyChars(7) = Asc("K")
    bKeyChars(8) = Asc("M")
    bKeyChars(9) = Asc("P")
    bKeyChars(10) = Asc("Q")
    bKeyChars(11) = Asc("R")
    bKeyChars(12) = Asc("T")
    bKeyChars(13) = Asc("V")
    bKeyChars(14) = Asc("W")
    bKeyChars(15) = Asc("X")
    bKeyChars(16) = Asc("Y")
    bKeyChars(17) = Asc("2")
    bKeyChars(18) = Asc("3")
    bKeyChars(19) = Asc("4")
    bKeyChars(20) = Asc("6")
    bKeyChars(21) = Asc("7")
    bKeyChars(22) = Asc("8")
    bKeyChars(23) = Asc("9")

    For ilByte = 24 To 0 Step -1

    nCur = 0

    For ilKeyByte = 14 To 0 Step -1
    'Step through each byte in the Product Key
    nCur = nCur * 256 Xor bProductKey(ilKeyByte)
    bProductKey(ilKeyByte) = Int(nCur / 24)
    nCur = nCur Mod 24
    Next

    sCDKey = Chr(bKeyChars(nCur)) & sCDKey
    If ilByte Mod 5 = 0 And ilByte <> 0 Then sCDKey = "-" & sCDKey
    Next

    sGetXPCDKey = sCDKey

    End Function
    Voici le code windev (faux pour l'instant)

    Code (Windev):
    ////windows
    sGetXPCDKey est une chaîne
    bDigitalProductID est une chaîne
    bProductKey est un tableau de chaînes
    bKeyChars est un tableau de chaînes = [

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

    ("B"),

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

    ("C"),

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

    ("D"),

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

    ("F"),

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

    ("G"),

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

    ("H"),

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

    ("J"),

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

    ("K"),

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

    ("M"),

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

    ("P"),

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

    ("Q"),

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

    ("R"),

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

    ("T"),

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

    ("V"),

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

    ("W"),

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

    ("X"),

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

    ("Y"),

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

    ("2"),

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

    ("3"),

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

    ("4"),

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

    ("6"),

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

    ("7"),

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

    ("8"),

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

    ("9")]
    ilByte est un entier
    nCur est un entier
    sCDKey est une chaîne
    ilKeyByte est un entier
    nIlBit est un entier
    bDigitalProductID =

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

    ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\","DigitalProductID")
    POUR ilByte = 52 À 66

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

    (bProductKey,bDigitalProductID[ilByte])
    FIN
    POUR ilByte = 24 À 0 PAS -1
        nCur = 1
        POUR ilKeyByte = 14 À 1 PAS -1
            //'Step through each byte in the Product Key
            nCur = nCur * 256 OR bProductKey[ilKeyByte]
            bProductKey[ilKeyByte] =

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

    (nCur / 24)
            nCur = nCur modulo 24
        FIN
        sCDKey +=

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

    (bKeyChars[nCur]) & sCDKey
        SI ilByte modulo 5 = 0 ET ilByte <> 0 ALORS sCDKey += "-" & sCDKey
    FIN
    sGetXPCDKey = sCDKey
    SAI_SansNom1 = sGetXPCDKey
    Merci d'avance de votre aide
     
    Tags:
    WX1331 apprécie ceci.
  2. FreudWD

    FreudWD Well-Known Member
    MEMBRE WX WXG 21

    Inscrit:
    Jan 22, 2018
    Messages:
    199
    J'aime reçus:
    368
    Salut popoy,

    J’ai fait quelques corrections, mais je n’ai pas pu garder "RegistreLit" à cause de mon W10 64 bits :
    Code (Windev):
    sGetXPCDKey est une chaîne
    bProductKey est un tableau d'entiers
    bKeyChars est un tableau d'entiers = [

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

    ("B"),

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

    ("C"),

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

    ("D"),

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

    ("F"),

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

    ("G"),

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

    ("H"),

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

    ("J"),

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

    ("K"),

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

    ("M"),

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

    ("P"),

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

    ("Q"),

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

    ("R"),

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

    ("T"),

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

    ("V"),

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

    ("W"),

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

    ("X"),

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

    ("Y"),

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

    ("2"),

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

    ("3"),

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

    ("4"),

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

    ("6"),

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

    ("7"),

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

    ("8"),

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

    ("9")]
    ilByte est un entier
    nCur est un entier
    sCDKey est une chaîne
    ilKeyByte est un entier

    HKEY_LOCAL_MACHINE est un entier = 0x80000002
    KEY_QUERY_VALUE est un entier = 0x1
    KEY_WOW64_64KEY est un entier = 0x0100

    bufBuffer est un Buffer sur 2048

    nRetour est un entier
    phkResult est un entier système
    lpcbData est un entier système

    lpcbData = 2048

    nRetour =

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

    ("advapi32.DLL", "RegOpenKeyExA", HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &phkResult)
    nRetour =

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

    ("advapi32.DLL", "RegQueryValueExA", phkResult, "DigitalProductId", 0, 0, &bufBuffer, &lpcbData)

    POUR ilByte = 52 À 66
       

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

    (bProductKey,

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

    (bufBuffer, ilByte, 1))
    FIN

    POUR ilByte = 24 À 0 PAS -1
        nCur = 0
        POUR ilKeyByte = 14 À 0 PAS -1
            //'Step through each byte in the Product Key
            nCur =

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

    (nCur * 256, bProductKey[ilKeyByte + 1])
            bProductKey[ilKeyByte + 1] =

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

    (nCur / 24)
            nCur = nCur modulo 24
        FIN
        sCDKey =

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

    (bKeyChars[nCur + 1]) + sCDKey
        SI ilByte modulo 5 = 0 ET ilByte <> 0 ALORS sCDKey = "-" + sCDKey
    FIN

    sGetXPCDKey = sCDKey
    SAI_SansNom1 = sGetXPCDKey
    A+.
     
    #2 FreudWD, Fev 6, 2019
    Dernière édition par un modérateur: Fev 6, 2019
    Gemini1961 et popoy aiment ça.
  3. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,532
    Merci

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

    ,
    d'avoir pris le temps de corriger mes bêtises.
    le fait d'utiliser les API Windows ne me dérange pas tant qu'une solution est apporté.
    Sur mon Windows 10 64 mon registrelit fonctionne.
    Bien que le code fonctionne il y a un depassement d'affectation sur cette ligne :
    HKEY_LOCAL_MACHINE est un entier = 0x80000002
     
    #3 popoy, Fev 6, 2019
    Dernière édition: Fev 6, 2019
  4. FreudWD

    FreudWD Well-Known Member
    MEMBRE WX WXG 21

    Inscrit:
    Jan 22, 2018
    Messages:
    199
    J'aime reçus:
    368
    Je n’ai aucun dépassement (ou leak), il s’affiche où chez toi et quelle version utilises-tu ?

    Pour corriger, il faut utiliser un entier sur 8 octets :
    HKEY_LOCAL_MACHINE est un entier sur 8 octets = 0x80000002

    PS : Mon "RegistreLit" pointe sur "WOW6432Node" pour cette adresse.

    A+.
     
    #4 FreudWD, Fev 6, 2019
    Dernière édition: Fev 6, 2019
  5. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,532

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

    , Merci pour entier sur 8 octets.
    j'ai eu aussi des ennuis avec SysEnvironnement selon que l'on exécute en mode 32 ou 64 il ne renvoie pas les mêmes informations.
    Il est bon de savoir que RegistreLit a aussi des soucis selon le mode.
    Parfois il est préférable d'utiliser Monétaire ou Numérique a la place de Entiers.
     
    Gemini1961 apprécie ceci.
  6. commun

    commun Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    225
    J'aime reçus:
    110
    salut, je viens de tester le code de

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


    en changeant
    HKEY_LOCAL_MACHINE est un entier sur 8 octets = 0x80000002 (sinon avertissement sans plantage)
    sur WD24 Windows 10 x64
    ça fonctionne parfaitement, mais j'ai un avertissement sur la ligne:

    nRetour = API("advapi32.DLL", "RegOpenKeyExA", HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &phkResult)

    dépassement de capacité

    (je retouve plus les tags de code)
     
    #6 commun, Fev 9, 2019
    Dernière édition: Fev 9, 2019
  7. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,532
    Salut

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

    ,
    cela signifie que nretour doit aussi être en entier 8 octets en mode 64 bits.
    Une autre solution est de mettre hkey et nretour en entier système car entier système s'adapte selon que l'on est en mode 32 ou 64.
    En fait l'API ne sert que si tu compile en 32 et que ton OS est 64.
     
  8. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,884
    J'aime reçus:
    1,532
    Merci aux modérateurs de mettre en résolu.
     

Partager cette page

Chargement...