Auto-commit: 2025-10-31 08:58:35
This commit is contained in:
103
USMT-Gui-Replace-Scenario/Tools/GetLicenceOffice.vbs
Normal file
103
USMT-Gui-Replace-Scenario/Tools/GetLicenceOffice.vbs
Normal file
@@ -0,0 +1,103 @@
|
||||
CONST HKEY_LOCAL_MACHINE = &H80000002
|
||||
CONST SEARCH_KEY = "DigitalProductID"
|
||||
|
||||
Dim args
|
||||
Set args = Wscript.Arguments
|
||||
Set WshShell = CreateObject("WScript.Shell")
|
||||
|
||||
Argument1 = args(0)
|
||||
|
||||
Dim arrSubKeys(6,1)
|
||||
Dim foundKeys
|
||||
Dim iValues, arrDPID
|
||||
foundKeys = Array()
|
||||
iValues = Array()
|
||||
strComputer = "."
|
||||
|
||||
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
|
||||
Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor")
|
||||
For Each objProcessor in colProcessors
|
||||
Select Case objProcessor.AddressWidth
|
||||
Case 32
|
||||
arrSubKeys(2,0) = "Microsoft Office XP"
|
||||
arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
|
||||
arrSubKeys(1,0) = "Microsoft Office 2003"
|
||||
arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
|
||||
arrSubKeys(3,0) = "Microsoft Office 2007"
|
||||
arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
|
||||
arrSubKeys(4,0) = "Microsoft Office 2010"
|
||||
arrSubKeys(4,1) = "SOFTWARE\Microsoft\Office\14.0\Registration"
|
||||
Case 64
|
||||
arrSubKeys(2,0) = "Microsoft Office XP"
|
||||
arrSubKeys(2,1) = "SOFTWARE\Wow6432Node\Microsoft\Office\10.0\Registration"
|
||||
arrSubKeys(1,0) = "Microsoft Office 2003"
|
||||
arrSubKeys(1,1) = "SOFTWARE\Wow6432Node\Microsoft\Office\11.0\Registration"
|
||||
arrSubKeys(3,0) = "Microsoft Office 2007"
|
||||
arrSubKeys(3,1) = "SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Registration"
|
||||
arrSubKeys(4,0) = "Microsoft Office 2010"
|
||||
arrSubKeys(4,1) = "SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration"
|
||||
End Select
|
||||
next
|
||||
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
|
||||
|
||||
For x = 1 To 4
|
||||
oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes
|
||||
If Not IsNull(arrDPIDBytes) Then
|
||||
call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
|
||||
Else
|
||||
oReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys
|
||||
If Not IsNull(arrGUIDKeys) Then
|
||||
For Each GUIDKey In arrGUIDKeys
|
||||
oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) & "\" & GUIDKey, SEARCH_KEY, arrDPIDBytes
|
||||
If Not IsNull(arrDPIDBytes) Then
|
||||
CodeRetour = tracelog(Argument1 & "\GetLicenceOffice.txt", arrSubKeys(x,0))
|
||||
call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
Function decodeKey(iValues, strProduct)
|
||||
Dim arrDPID
|
||||
arrDPID = Array()
|
||||
|
||||
For i = 52 to 66
|
||||
ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
|
||||
arrDPID( UBound(arrDPID) ) = iValues(i)
|
||||
Next
|
||||
Dim arrChars
|
||||
arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
|
||||
|
||||
For i = 24 To 0 Step -1
|
||||
k = 0
|
||||
For j = 14 To 0 Step -1
|
||||
k = k * 256 Xor arrDPID(j)
|
||||
arrDPID(j) = Int(k / 24)
|
||||
k = k Mod 24
|
||||
Next
|
||||
strProductKey = arrChars(k) & strProductKey
|
||||
If i Mod 5 = 0 And i <> 0 Then strProductKey = "-" & strProductKey
|
||||
Next
|
||||
|
||||
ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
|
||||
foundKeys( UBound(foundKeys) ) = strProductKey
|
||||
strKey = UBound(foundKeys)
|
||||
wscript.echo ( "Product(license) key is " & foundKeys(strKey))
|
||||
CodeRetour = tracelog(Argument1 & "\GetLicenceOffice.txt", foundKeys(strKey))
|
||||
End Function
|
||||
|
||||
' ********** Fonction **********************************************************************************************
|
||||
Function GetPath()
|
||||
Dim path
|
||||
path = WScript.ScriptFullName
|
||||
GetPath = Left(path, InStrRev(path, "\"))
|
||||
End Function
|
||||
|
||||
Function TraceLog(FichierLog,Commentaire)
|
||||
Dim oFso, fich
|
||||
Set oFso = CreateObject("Scripting.FileSystemObject")
|
||||
Set fich = oFso.OpenTextFile(FichierLog,8,True)
|
||||
fich.writeline Commentaire
|
||||
fich.close
|
||||
End Function
|
||||
Reference in New Issue
Block a user