hamst0r
Goto Top

VB-Script - Prüfen ob Programm installiert ist

Ich würde gerne ein VB-Script über Gruppenrichtlinien verteilen, dass beim Start die jeweilig installierte Office Version sucht, die Version erkennt und diese in eine Textdatei auf dem Server speichert. Ich will ermitteln, welche Office Versionen jeweils auf verschiedenen Pcs vorhanden sind.

Das hier habe ich im Netz gefunden:


'officepath="C:\Program Files\Microsoft Office\Office\"  
'set fso=createobject("scripting.filesystemobject")  
'returnstring=fso.getfileversion(officepath & "winword.exe")  
'wscript.echo returnstringset  
'fso=nothing  

MsgBox "Start"  

Set objWMI = GetObject("winmgmts:\\PC0761\root\CIMV2")  
Set colItems = objWMI.ExecQuery("SELECT Version FROM Win32_Product WHERE Name Like 'Microsoft Office%'")  

If colItems.Count = 0 Then
	GetOfficeVersion = "0"  
End If
    
For Each objItem In colItems
	GetOfficeVersion = Left(objItem.Version, InStr(1,objItem.Version,".")-1)  
Next
    
Set objWMI = Nothing
Set colItems = Nothing
Set objWMI = Nothing

MsgBox GetOfficeVersion

MsgBox "Ende"  

Leider dauert die Suche im Win32 mithilfe von den WMI einige Minuten, das möchte ich möglichst beschleunigen. Kennt ihr eine schnellere Methode um das Programm ausfindig zu machen und die Versionsnummer auszulesen? Ich könnte doch theoretisch auch im Startmenü suchen, dort sind es ja nur wenige Dateien die durchforstet werden müssen?!

Lg

Hamst0r

Content-Key: 150419

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

Printed on: April 25, 2024 at 05:04 o'clock

Member: bankaifan
bankaifan Sep 06, 2010 at 13:33:40 (UTC)
Goto Top
Dann versuch es doch einfach mal mit dem Startmenü.

Der Pfad ist

C:\Dokumente und Einstellungen\%USERNAME%\Startmenü\Programme
Member: Hamst0r
Hamst0r Sep 06, 2010 at 13:40:51 (UTC)
Goto Top
Da gäbe es ein problem, ich habe gerade erfahren, dass das Script vor dem Login ausgeführt werden soll, sprich es lässt sich vor dem Login ja bekanntlich schlecht auf ein Startmenü zugreifen :/
Member: bankaifan
bankaifan Sep 06, 2010 at 13:47:59 (UTC)
Goto Top
Und wie stellst du dir dann vor das zu prüfen? also wenn ich jetzt mal so tippe sag ich mal es geht nicht vor dem login :D

Du musst ja mal überlegen dass installationen zwar auf einer platte sind aber doch userspezifisch sind. d. h. du müsstest auf der platte direkt suchen und wenn man einfach so vor dem login auf die HDD zugreifen könnte wäre der Login irgendwie nicht ganz soo sinnvoll. aber gut. vllt weiß hier noch jmd anderes Rat. Interessiert mich jetzt auch.
Member: Karo
Karo Sep 06, 2010 at 14:03:36 (UTC)
Goto Top
Hoi,

Du suchst doch nur die Version, oder? Warum liest Du dann nicht aus der Registry die entsprechenden Keys und wertest sie aus
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0
...
oder
...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Common\ProductVersion

oder die entsprecheneden Schlüssel aus
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall


Karo
Member: Hamst0r
Hamst0r Sep 06, 2010 at 14:09:02 (UTC)
Goto Top
Dann bräuchte ich aber die speziellen Registry einträge für Word z.b., weil es ja durchaus sein kann, dass ich tools wie sharepoint 2010 installiert habe, aber eig nur office 2007 besitze. Er legt mir in der registry also dann einen 12.0 order sowie einen 14.0 ordner an.

@bankaifan: Das Script muss vor dem Login ausgeführt werden via Gruppenrichtlinien, nach dem Login sind ja die Adminrechte weg und somit wäre auch keine installation möglich.
Member: Karo
Karo Sep 07, 2010 at 07:22:01 (UTC)
Goto Top
Moin,
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Common\ProductVersion?

Karo
Member: Hamst0r
Hamst0r Sep 07, 2010 at 07:30:32 (UTC)
Goto Top
Welche Versionen Stecken hinter 11.0 und 12.0, etwa 2003 und 2007 ? Wie heiß dann der Regordner von 2000 ? Und gelten die Versionsnummer dann nur für Word oder für das ganze office paket?
Member: Karo
Karo Sep 07, 2010 at 11:00:18 (UTC)
Goto Top
na, nen bissi Raten macht es doch erst interessant face-wink
schau mal hier
http://en.wikipedia.org/wiki/Microsoft_Office
http://en.wikipedia.org/wiki/Microsoft_Outlook
Das hilft Dir sicherlich.

Karo
Member: Hamst0r
Hamst0r Sep 07, 2010 at 12:49:58 (UTC)
Goto Top
Sprich quasi einfach nach dem Motto

Gucke in Registry Order "...12.0 " rein, falls was drin ist, schreib in Textdatei, falls nicht, weiter zu Ordner 13.0

Sehe ich das richtig?
Member: Karo
Karo Sep 07, 2010 at 13:02:30 (UTC)
Goto Top
ja fast, denn unter diesem Zweig gibt es den Wert 'LastProduct' und den kannst Du doch wunderhübsch auswerten....

Karo
Member: Hamst0r
Hamst0r Sep 07, 2010 at 13:37:58 (UTC)
Goto Top
Folgendes Problem.

Ich habe Office 2010 nicht installiert, aber habe den Sharepoint Designer 2010 zum Beispiel. Sprich ich habe in der Registry unter Office einen 14.0 Ordner, obwohl ich garkein Office 2010 installiert habe :/
Member: Karo
Karo Sep 07, 2010 at 13:44:53 (UTC)
Goto Top
ist denn auch der Wert LastProduct vorhanden?
Member: Hamst0r
Hamst0r Sep 07, 2010 at 13:53:39 (UTC)
Goto Top
Leider ja!

Mir ist gerade noch eine andere Idee gekommen:

z.b. 11.0/Word/InstallRoot

Dort kann man zumindest den Installationspfad von der .exe auslesen, sprich dann im Endeffekt über die Eigenschaften der .exe Datei von Word die Versionsnummer rausfinden. Leider sehr umständlich und es wäre insgesamt auch praktisch, wenn man direkt noch rauslesen könnte obs Standard oder Prof Edition wäre. Man man man ^^
Member: Hamst0r
Hamst0r Sep 09, 2010 at 07:19:05 (UTC)
Goto Top
Soo Leute, ich kann euch die Lösung vorstellen:

Set objWord = CreateObject("Word.Application")
Wscript.Echo "Version: " & objWord.Version
Wscript.Echo "Build: " & objWord.Build
objWord.Quit

So einfach ist es, aber darauf zukommen, naja^^

Er erstellt ein Word Objekt und prüft dann die Eigenschaften und gibt sie aus. objWord = CreateObject("Word.Application") ist der Schlüsselpunkt, auf den man kommen muss face-smile