Récupérer le ProductID Office

crocro43 Messages postés 1 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 8 juillet 2010 - 8 juil. 2010 à 09:21
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 8 juil. 2010 à 10:42
Bonjour à tous,
Actuellement en stage dans une entreprise, on me demande de faire l'inventaire du parc informatique (cela n'a jamais etait fait )
Je me suis dit qu'un petit script en .vbs serait plus sympa a utiliser que le traditionnel crayon et papier.
J'ai donc grâce à l'aide de plusieurs script déjà existant fait un petit script à ma façon qui récupère toutes les infos utiles.
Seulement, je n'arrive pas à trouver de script qui récupère le productID d'office.
JE sait qu'il se trouve ici :
HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Office\ XX \ REGISTRATION
(XX suivant la version d'office. 10 pour office 2002, 11 pour 2003, 12 pour 2007 )
Le recensement des licences office installées serait très utiles car mes prédécesseurs on installer des licences et moi je me retrouves avec un pile de CD office sans savoir lesquels sont installés.
Quelqu'un pourrait t'il m'aider à récupérer la valeur du productID dans la base des registres ??

Merci d'avance.

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juil. 2010 à 10:42
Salut
Je te colle là un programme VB6 que tu pourras facilement convertir en VBS.
Il permet de retrouver la clé de licence Windows, mais je pense que tu dois pouvoir le transposer pour la clé Office.
Désolé, je n'ai pas retrouvé l'URL d'où cette source vient.

Vala
Jack, fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Option Explicit

'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&
'

Private Sub Command1_Click()
    Unload Me
End Sub

Private Sub Form_Load()
    
    Text1.Text = sGetXPCDKey
    
End Sub
    
    
Public Function sGetXPCDKey() As String
    'Read the value of:
    'HKLM\SOFTWARE\MICROSOFT\Windows NT\CurrentVersion\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\MICROSOFT\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\MICROSOFT\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

    For ilByte = 24 To 0 Step -1
        'Step through each character in the CD key
        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 ilKeyByte
        sCDKey = Chr(bKeyChars(nCur)) & sCDKey
        If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey
    Next ilByte
    sGetXPCDKey = sCDKey

End Function

0
Rejoignez-nous