techpriest
Goto Top

Office Produktversion per VBS auslesen und in Varaiable überführen

Hallo zusammen,

ich benötige ein VB Skript, welches mir die installierte OfficeProduktversion ausliest.

Ich muss nicht nur wissen, dass Office 2010 installiert ist, ich brauche quasi den String "Microsoft Office Professional Plus 2010" respektive "Microsoft Office Standard 2010".

Ich weiß, daß diese Info in der Registry zu finden ist und auch in etwa wo. Es ist wohl ein Key mit Namen DisplayName irgendwo unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\.

Nur wie krieg ich das raus, extrahiere das aus dem Wust an Informationen und übergebe den String in eine Variable, mit der ich weiter arbeiten kann.

Meine Suchen führten mich bisher immer nur dahin, dass ich rauskriegen, dass Office installiert ist, aber nicht welche Produktversion. Und es müsste VBS sein, kein Batch, Powershell, etc.

Meine bisherige Lösung ist etwas krude (sucht nur nach Vorhandensein eines Access-Keys):

Const HKLM = &H80000002

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKey= "SOFTWARE\Microsoft\Office\14.0\Access\Options"
strValue = "AttachIndexWarning"
objRegistry.GetStringValue HKLM,strKey,strValue

If IsNull(strValue) Then
ver="Microsoft Office 2010 Standard"
Else
ver="Microsoft Office 2010 Professional Plus"
End If

DANKE SCHON EINMAL!!!!!!!!!

Content-Key: 204850

Url: https://administrator.de/contentid/204850

Printed on: April 24, 2024 at 08:04 o'clock

Member: colinardo
colinardo Apr 11, 2013 updated at 14:44:42 (UTC)
Goto Top
Hi TechPriest,
diese Methode via WMI ist zuverlässiger. Sie ließt dir alle installierten Microsoft Office Produkte aus und zeigt sie dir zum Schluss an. Denke damit kannst du weiterarbeiten:
(Hinweis: Je nach dem wieviel Software auf dem Rechner installiert ist kann das einen kurzen Moment dauern.)
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product where Caption like 'Microsoft Office%'")  

strOfficeProducts = ""  
For Each objSoftware in colSoftware
	    strOfficeProducts = strOfficeProducts & objSoftware.Caption & vbcrlf
Next
WScript.Echo strOfficeProducts

Grüße Uwe
Member: Techpriest
Techpriest Apr 11, 2013 at 15:00:24 (UTC)
Goto Top
Hi Colinardo,

das ist schon recht gut, danke.

Aber die Suche dauert tatsächlich zu lange und in der Ausgabe habe ich dann alles mögliche an Office Produkten.

Ich brauche wirklich nur "Microsoft Office ProfessionalPlus 2010" ODER "Microsoft Office Standard 2010".

Ich glaube, dass Microsft die Keys ind er Registry codiert, so dass z.B. Office Pro Plus den Unter-Key {90140000-0011-0000-0000-0000000FF1CE} hat (also HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90140000-0011-0000-0000-0000000FF1CE})

Mal sehen, ob ich da was finde. Ber vielleicht hat ja noch jemand eine Lösung.

Gruß,
Carsten
Member: colinardo
colinardo Apr 11, 2013 updated at 15:10:57 (UTC)
Goto Top
Wenn du es unbedingt über die Registry machen willst hier das Nummerierungsschema der GUIDs für MS-Office
http://support.microsoft.com/kb/2186281/de

Beachte aber folgendes: Ein 32bit Office findest du auf einem x64-System in folgendem Schlüssel:
HKEY_LOCAL_MACHINE\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Member: Techpriest
Techpriest Apr 11, 2013 at 15:13:17 (UTC)
Goto Top
Bin ich gerade auch schon drüber gestolpert. face-smile

Trotzdem Danke.