Comment obtenir le numéro de license de windows XP

Résolu
cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015 - 1 sept. 2006 à 19:13
cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015 - 2 sept. 2006 à 10:40
Salut,
voilà, je cherche à obtenir la clef du registre qui contient le numéro de série de windows. J'ai déjà la fonction pour lire dans le registre, et je crois savoir où elle est (HKLM, software, microsoft, windows nt, currentversion; clef "licenseinfo"). Mais je pense que cette clef est "cryptée". Est-ce que quelqu'un saurait le décoder? Sur le net, j'ai rien trouvé mais ça doit être possible (tout est possible avec la carte kiwi  )

Merci d'avance

5 réponses

le5ejumeau Messages postés 130 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 9 juillet 2009
1 sept. 2006 à 23:37
salut,
Essaye avec cette fonction:

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that If you declare the lpData parameter as String, you must pass it By Value.
    Private Const REG_BINARY = 3
    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const ERROR_SUCCESS = 0&
   
Public xpcdkeyview As String
   
   
   
Public Function sGetXPCDKey() As String
    'Read the value of:
    'HKLM\SOFTWARE\MICROSOFT\Windows NT\Curr
    '   entVersion\DigitalProductId
    Dim bDigitalProductID() As Byte
    Dim bProductKey() As Byte
    Dim ilByte As Long
    Dim lDataLen As Long
    Dim hKey As Long
    'Open the registry key: HKLM\SOFTWARE\MI
    '   CROSOFT\Windows NT\CurrentVersion

    If RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", hKey) = ERROR_SUCCESS Then
        lDataLen = 164
        ReDim Preserve bDigitalProductID(lDataLen)
        'Read the value of DigitalProductID

        If RegQueryValueEx(hKey, "DigitalProductId", 0&, REG_BINARY, bDigitalProductID(0), lDataLen) = ERROR_SUCCESS Then
            'Get the Product Key, 15 bytes long, off
            '   set by 52 bytes
            ReDim Preserve bProductKey(14)

            For ilByte = 52 To 66
                bProductKey(ilByte - 52) = bDigitalProductID(ilByte)
            Next ilByte
        Else
            'ERROR: Could not read "DigitalProductID
            '   "
            sGetXPCDKey = ""
            Exit Function
        End If
    Else
        'ERROR: Could not open "HKLM\SOFTWARE\MI
        '   CROSOFT\Windows NT\CurrentVersion"
        sGetXPCDKey = ""
        Exit Function
    End If
    'Now we are going to 'base24' decode the
    '   Product Key
    Dim bKeyChars(0 To 24) As Byte
    '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")
    Dim nCur As Integer
    Dim sCDKey As String
    Dim ilKeyByte As Long
    Dim ilBit As Long

    For ilByte = 24 To 0 Step -1
        'Step through each character in the CD k
        '   ey
        nCur = 0

        For ilKeyByte = 14 To 0 Step -1
            'Step through each byte in the Product K
            '   ey
            nCur = nCur * 256 Xor bProductKey(ilKeyByte)
            bProductKey(ilKeyByte) = Int(nCur / 24)
            nCur = nCur Mod 24
        Next ilKeyByte
        sCDKey = Chr(bKeyChars(nCur)) & sCDKey        If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey
    Next ilByte
    sGetXPCDKey = sCDKey
     xpcdkeyview = sGetXPCDKey
End Function

voila a+
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
1 sept. 2006 à 21:38
tu peux l'obtenir en utilisant une requête WMI :


For Each objOS in GetObject( "winmgmts:").InstancesOf ("Win32_OperatingSystem")

    sSerialNumber =  objOS.SerialNumber

Next

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015
1 sept. 2006 à 22:36
Ta solution fonctionne mais elle ne donne pas le numéro de série (license), mais le productID, qui, au passage, est stocké dans le registre en clair! Mais ce que je souhaite obtenir c'est le numéro de série que l'utilisateur a du taper quand il a installé windows.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
1 sept. 2006 à 22:41
au temps pour moi

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015
2 sept. 2006 à 10:40
Super ça fonctionne! Merci
0
Rejoignez-nous