redzack
Goto Top

Office Version via wsh auslesen

Stecke mal wieder voll im Scriptfieber und sehe den Wald vor lauter Bäumen nicht mehr.
Ich versuche via Script die Officeversion auszulesen welche gerade aktuell auf dem System installiert ist. Doch irgendwo hat sich der Fehlerteufel in mein Script eingeschlichen vielleicht könnt Ihr ihn ja entdecken.

Hier mal das Script.


Function GetOfficeVer() 
  On Error Resume Next 
  Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE   
  Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "/root/default:StdRegProv")   
  
  If Err.Number <> 0 Then 
    GetOfficeVer = "unknow"   
  End If 


  sValueName = "Path"   
  sRegPre = "SOFTWARE\Microsoft\Office\"   
  sRegPost = "\Common\InstallRoot"   


  If oReg.GetStringValue(HKLM, sRegPre & "12.0" & sRegPost, sValueName, sValue) = 0 Then   
    GetOfficeVer = "Office 2007"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "11.0" & sRegPost, sValueName, sValue) = 0 Then   
    GetOfficeVer = "Office 2003"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "10.0" & sRegPost, sValueName, sValue) = 0 Then   
    GetOfficeVer = "Office 2002"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "9.0" & sRegPost, sValueName, sValue) = 0 Then   
    GetOfficeVer = "Office 2000"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "8.0" & sRegPost, sValueName, sValue) = 0 Then   
    GetOfficeVer = "Office 97"   
  Else 
    GetOfficeVer = "0"  
  End If 
End Function 

msgbox GetOfficeVer

Vielen Dank im Vorraus
lg
red

Content-Key: 132203

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

Printed on: April 23, 2024 at 17:04 o'clock

Member: redzack
redzack Dec 23, 2009 at 10:57:42 (UTC)
Goto Top
Hat sich erledigt ;)

Function GetOfficeVer() 
  strComputer = "."  
  
  On Error Resume Next 
  Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE   
  Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "/root/default:StdRegProv")   
  
  If Err.Number <> 0 Then 
    GetOfficeVer = "unknow"   
  End If 


  sValueName = "Path"   
  sRegPre = "SOFTWARE\Microsoft\Office\"   
  sRegPost = "\Common\InstallRoot\"   


  If oReg.GetStringValue(HKLM, sRegPre & "12.0" & sRegPost, sValueName, strValue) = 0 Then   
    GetOfficeVer = "Office 2007"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "11.0" & sRegPost, sValueName, strValue) = 0 Then   
    GetOfficeVer = "Office 2003"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "10.0" & sRegPost, sValueName, strValue) = 0 Then   
    GetOfficeVer = "Office 2002"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "9.0" & sRegPost, sValueName, strValue) = 0 Then   
    GetOfficeVer = "Office 2000"   
  Elseif oReg.GetStringValue(HKLM, sRegPre & "8.0" & sRegPost, sValueName, strValue) = 0 Then   
    GetOfficeVer = "Office 97"   
  Else 
    GetOfficeVer = "unknow"  
  End If 
End Function 

msgbox GetOfficeVer

Funktioniert nun bestens.

lg
red
Mitglied: 76109
76109 Dec 23, 2009 at 11:51:52 (UTC)
Goto Top
Hallo redzack!

Alternativ könnte man es auch so machen:
Function GetOfficeVer()
   On Error Resume Next
  
   Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE  
  
   strComputer = "."  
  
   Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "/root/default:StdRegProv")  
  
   If Err.Number <> 0 Then GetOfficeVer = "unknow":  Exit Function  

   sValueName = "Path"  
   sRegPre = "SOFTWARE\Microsoft\Office\"  
   sRegPost = "\Common\InstallRoot"  

   aVersion = Array("12.0", "11.0", "10.0", "9.0", "8.0")  
   aVerYear = Array("2007", "2003", "2002", "2000", "1997")  
    
   GetOfficeVer = "0"  

   For i = 0 To UBound(aVersion)
     If oReg.GetStringValue(HKLM, sRegPre & aVersion(i) & sRegPost, sValueName, sValue) = 0 Then
        GetOfficeVer = "Office " & aVerYear(i):  Exit For  
     End If
   Next
End Function

Gruß Dieter