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-ID: 132203

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

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

redzack
redzack 23.12.2009 um 11:57:42 Uhr
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
76109
76109 23.12.2009 um 12:51:52 Uhr
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