Office Produktnummer auslesen
19.06.2006
15:12:11 Uhr31320 Aufrufe
10 Antworten
15:12:11 Uhr
10 Antworten
Wenig hilfreich -1
Hi,
ich suche nach einer Möglichkeit die Produktnummer! NICHT die Seriennummer/Lizenzkey auszulesen.
Ich habe einen Registrierungsschlüssel gefunden bzw. zwei.
Der eine hat keine Leseberechtigung und der zweite geht aber.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\User information\Product Identification <-geht
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration\ProductID <-geht nicht
So, dies betrifft aber nur Windows 2000 und Office 2000. Leider ist dies unter Windows XP nicht der gleiche Schlüssel.
Wie kann ich alternativ diese Nummer auslesen um sie dann weiter zu benutzen.
BITTE keine Tools!
Ich brauch das in Form eines Scripts, um das in eine DB zu schreiben.
Die Windows Produktnummer kann ich problemlos auslesen.
Dank im Vorraus!
ich suche nach einer Möglichkeit die Produktnummer! NICHT die Seriennummer/Lizenzkey auszulesen.
Ich habe einen Registrierungsschlüssel gefunden bzw. zwei.
Der eine hat keine Leseberechtigung und der zweite geht aber.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\User information\Product Identification <-geht
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Registration\ProductID <-geht nicht
So, dies betrifft aber nur Windows 2000 und Office 2000. Leider ist dies unter Windows XP nicht der gleiche Schlüssel.
Wie kann ich alternativ diese Nummer auslesen um sie dann weiter zu benutzen.
BITTE keine Tools!
Ich brauch das in Form eines Scripts, um das in eine DB zu schreiben.
Die Windows Produktnummer kann ich problemlos auslesen.
Dank im Vorraus!
Xaero1982 schreibt am 20.06.2006 um 15:30:12 Uhr
Lösung:
So klappt das
ProdNr = Produktnummer
sOfficeVer = Version
Damit kann man dan machen was man möchte!
Danke an: http://www.winhelpline.info/forum/tipps-u ...
WICHTIG
Bei "11.0" und "10.0" kann der RegKey varriieren. Vorher bitte checken! Thx an Biber!
01.
set WshShell = CreateObject("WScript.Shell") 02.
03.
sRegPre = "HKLM\SOFTWARE\Microsoft\Office\" 04.
sRegPost = "\Common\InstallRoot\" 05.
sRegProdPre = "HKLM\SOFTWARE\Microsoft\Office\" 06.
sRegProdPast = "\Registration\" 07.
Select Case True 08.
Case RegKeyExists(sRegPre & "11.0" & sRegPost) 09.
ProdNr = WshShell.RegRead(sRegProdPre & "11.0" & sRegProdPast & "{91110407-6000-11D3-8CFE-0150048383C9}\ProductID") 10.
sOfficeVer = "Microsoft Office 2003" 11.
Case RegKeyExists(sRegPre & "10.0" & sRegPost) 12.
ProdNr = WshShell.RegRead(sRegProdPre & "10.0" & sRegProdPast & "{91110407-6000-11D3-8CFE-0050048383C9}\ProductID") 13.
sOfficeVer = "Microsoft Office 2002" 14.
Case RegKeyExists(sRegPre & "9.0" & sRegPost) 15.
ProdNr = WshShell.RegRead(sRegProdPre & "9.0" & sRegProdPast & "ProductID\") 16.
sOfficeVer = "Microsoft Office 2000" 17.
Case RegKeyExists(sRegPre & "8.0 " & sRegProdPast" & sRegPost) 18.
ProdNr = WshShell.RegRead(sRegProdPre & "8.0" & sRegProdPast & "ProductID\") 19.
sOfficeVer = "Microsoft Office 97" 20.
Case Else 21.
sOfficeVer = "Keine" 22.
End Select 23.
24.
Function RegKeyExists(ByVal sRegKey) 25.
' Returns True or False based on the existence of a registry key. 26.
27.
Dim sDescription, oShell 28.
Set oShell = CreateObject("WScript.Shell") 29.
30.
RegKeyExists = True 31.
sRegKey = Trim (sRegKey) 32.
If Not Right(sRegKey, 1) = "\" Then 33.
sRegKey = sRegKey & "\" 34.
End If 35.
36.
On Error Resume Next 37.
oShell.RegRead "HKEYNotAKey\" 38.
sDescription = Replace(Err.Description, "HKEYNotAKey\", "") 39.
40.
Err.Clear 41.
oShell.RegRead sRegKey 42.
RegKeyExists = sDescription <> Replace(Err.Description, sRegKey, "") 43.
On Error Goto 0 44.
End FunctionSo klappt das
ProdNr = Produktnummer
sOfficeVer = Version
Damit kann man dan machen was man möchte!
Danke an: http://www.winhelpline.info/forum/tipps-u ...
WICHTIG
Bei "11.0" und "10.0" kann der RegKey varriieren. Vorher bitte checken! Thx an Biber!
Biber schreibt am 20.06.2006 um 16:29:42 Uhr
Moin Xaero1982,
Hinweis: Der Key bei Office 2002 (10.0) und wahrscheinlich auch bei Office 2003 (11.0) ist unter Umständen leicht variierbar:
Bei Dir: .... "{91110407-6000-11D3-8CFE-0050048383C9}\ProductID"
Bei mir: .... "{90110407-6000-11D3-8CFE-0050048383C9}\ProductID"
...also die 2. Ziffer im ersten Block kann 0 oder 1 sein. Mindestens.
Ich würde zumindest vorher mal bei ein paar Clients (oder Freiwilligen hier im Forum) den Test mit
reg query "HKLM\SoftWare\Microsoft\office" /s |find "Registration"
..machen und den Output mal ansehen.
Denn an der Stelle reicht wahrscheinlich eine Suche nach "-6000-11D3-8CFE-"... denn die findet die ProductID, während eine exacte Suche in die Grütze geht.
Gruß
Biber
Hinweis: Der Key bei Office 2002 (10.0) und wahrscheinlich auch bei Office 2003 (11.0) ist unter Umständen leicht variierbar:
Bei Dir: .... "{91110407-6000-11D3-8CFE-0050048383C9}\ProductID"
Bei mir: .... "{90110407-6000-11D3-8CFE-0050048383C9}\ProductID"
...also die 2. Ziffer im ersten Block kann 0 oder 1 sein. Mindestens.
Ich würde zumindest vorher mal bei ein paar Clients (oder Freiwilligen hier im Forum) den Test mit
reg query "HKLM\SoftWare\Microsoft\office" /s |find "Registration"
..machen und den Output mal ansehen.
Denn an der Stelle reicht wahrscheinlich eine Suche nach "-6000-11D3-8CFE-"... denn die findet die ProductID, während eine exacte Suche in die Grütze geht.
Gruß
Biber
Biber schreibt am 20.06.2006 um 22:58:28 Uhr
Na ja, Xaero,
vom CMD-Prompt aus bzw. vom Batch würde ich einfach als Oneliner abschicken:
for /f "tokens=7 delims=\" %i in ('reg query "HKLM\SoftWare\Microsoft\office\10.0\registration" ^|find "0407-6000-"') do @echo %i
... und als Antwort bekommen:
{90110407-6000-11D3-8CFE-0050048383C9}
{90120407-6000-11D3-8CFE-0050048383C9}
[Oder so ähnlich]
Das Prinzip sollte eigentlich auch mit den RegXXX()-VBS-Funktionen machbar sein, denn zumindest die RegKeys, die unterhalb der ja namentlich bekannten Verzeichnisse
- HKLM\SoftWare\Microsoft\Office\10.0\Registration
- HKLM\SoftWare\Microsoft\Office\11.0\Registration
- HKLM\SoftWare\Microsoft\Office\12.0\Registration (????) falls schon draußen
...liegen, diese RegKeys kannst Du ja ermitteln, denke ich, und diese mit der InStr()-Funktion auf "0407-6000-11D3-8CFE" prüfen.
[wobei "0407" sicherlich "deutsche Version" heißt]
Du weißt ja, mir würde das alles zu lange dauern und ich würde es per Batch-Oneliner abfackeln.
Grüße
Biber
vom CMD-Prompt aus bzw. vom Batch würde ich einfach als Oneliner abschicken:
for /f "tokens=7 delims=\" %i in ('reg query "HKLM\SoftWare\Microsoft\office\10.0\registration" ^|find "0407-6000-"') do @echo %i
... und als Antwort bekommen:
{90110407-6000-11D3-8CFE-0050048383C9}
{90120407-6000-11D3-8CFE-0050048383C9}
[Oder so ähnlich]
Das Prinzip sollte eigentlich auch mit den RegXXX()-VBS-Funktionen machbar sein, denn zumindest die RegKeys, die unterhalb der ja namentlich bekannten Verzeichnisse
- HKLM\SoftWare\Microsoft\Office\10.0\Registration
- HKLM\SoftWare\Microsoft\Office\11.0\Registration
- HKLM\SoftWare\Microsoft\Office\12.0\Registration (????) falls schon draußen
...liegen, diese RegKeys kannst Du ja ermitteln, denke ich, und diese mit der InStr()-Funktion auf "0407-6000-11D3-8CFE" prüfen.
[wobei "0407" sicherlich "deutsche Version" heißt]
Du weißt ja, mir würde das alles zu lange dauern und ich würde es per Batch-Oneliner abfackeln.
Grüße
Biber
Xaero1982 schreibt am 21.06.2006 um 07:57:05 Uhr
Ich weiss, ich weiss 
Ich brauche das in meinem Fall als Startscript und das soll dann automatisch in eine Access DB geschrieben werden.
In deinem Fall müsst ich das dann erst mal wieder einlesen.
Bei mir stehts direkt in einer Variable.
PS: wenn ich deinen onliner eingebe bekomme ich kein Echo
Ich brauche das in meinem Fall als Startscript und das soll dann automatisch in eine Access DB geschrieben werden.
In deinem Fall müsst ich das dann erst mal wieder einlesen.
Bei mir stehts direkt in einer Variable.
PS: wenn ich deinen onliner eingebe bekomme ich kein Echo
JKy schreibt am 15.07.2006 um 12:07:17 Uhr
Habe hier einen Rechner bei dem früher mal Office 2003 installiert war und jetzt Office 2000 läuft (warum auch immer).
- HKLM\SoftWare\Microsoft\Office\10.0\Registration
- HKLM\SoftWare\Microsoft\Office\11.0\Registration
Diese Schlüssel sind allerdings beide vorhanden, wie kann ich herausfinden, welche Version im Augenblick installiert ist?
- HKLM\SoftWare\Microsoft\Office\10.0\Registration
- HKLM\SoftWare\Microsoft\Office\11.0\Registration
Diese Schlüssel sind allerdings beide vorhanden, wie kann ich herausfinden, welche Version im Augenblick installiert ist?
JKy schreibt am 17.07.2006 um 08:42:10 Uhr
Sorry, habe beim beantworten nur aus dem Tread kopiert. Ich möchte aus der Registry auslesen welches Office installiert ist und auf diesem Rechner sind trotz deinstallation des höheren Office die Registryeinträge noch vorhanden. Kennt einer einen Schlüssel der zweifelsfrei die aktuelle Officeversion verrät?






