Das Notes Forum

Lotus Notes / Domino Sonstiges => Tipps und Tricks => Thema gestartet von: eknori am 03.02.05 - 09:57:11

Titel: installierte Office Version ermitteln
Beitrag von: eknori am 03.02.05 - 09:57:11
Hier (http://www.eknori.de/_content/show_index.php?nr=1056&directory=home&flag=archiv) ein kleiner Tip, wie man mit @RegQueryValue die installierte Office Version ermittelt ( Office97, Office2000, OfficeXP )
Titel: Re: installierte Office Version ermitteln
Beitrag von: joringel am 03.02.05 - 11:31:26
Ist Dir da ein Tippfehler unterlaufen? Müsste m.E. so aussehen:

_retVal:=
@If(
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\\Microsoft\\Office\\8.0\\Common\\InstallRoot"; "Path")!="";"Office 97";
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\\Microsoft\\Office\\9.0\\Common\\InstallRoot"; "Path")!="";"Office 2000";
@RegQueryValue("HKEY_LOCAL_MACHINE"; "Software\\Microsoft\\Office\\10.0\\Common\\InstallRoot"; "Path")!="";"Office XP";
"no Office installed");
@Prompt([Ok];" ";_retVal)

Trotzdem sehr brauchbar, danke.

Gruss
Joringel
Titel: Re: installierte Office Version ermitteln
Beitrag von: Axel am 04.02.05 - 08:12:22
Ist Dir da ein Tippfehler unterlaufen?


Wo soll denn der Tippfehler sein? Das sieht doch genauso aus.


Axel
Titel: Re: installierte Office Version ermitteln
Beitrag von: eknori am 04.02.05 - 08:25:56
ich habe das gestern noch korrigiert; mein CMS hat irgendwie Probleme mit den Backslashes
Titel: Re: installierte Office Version ermitteln
Beitrag von: cgorni am 25.02.05 - 16:21:46
Danke für den Tip. Kann ich wirklich gut gebrauchen, da ich öfter mal was mit Word und OLE mache. Deswegen: hier die version für LotusScript.

------ SNIP -----

Function getWordVersion() As String
   
   Const REGWORD_97         = "Software\\Microsoft\\Office\\8.0\\Common\\InstallRoot"
   Const REGWORD_2000      = "Software\\Microsoft\\Office\\9.0\\Common\\InstallRoot"
   Const REGWORD_XP      = "Software\\Microsoft\\Office\\10.0\\Common\\InstallRoot"
   Const REGWORD_2003      ="Software\\Microsoft\\Office\\11.0\\Common\\InstallRoot"
   Const WORDNAME_97      = "Office 97"
   Const WORDNAME_2000   = "Office 2000"
   Const WORDNAME_XP      = "Office XP"
   Const WORDNAME_2003   = "Office 2003"
   
   Dim formula As String
   Dim WordVersions List As String
   Dim v As Variant
   
   '----------------------------------------------------------------------
   ' Initialize all possible versions
   '----------------------------------------------------------------------
   WordVersions(WORDNAME_97)         = REGWORD_97
   WordVersions(WORDNAME_2000)      = REGWORD_2000
   WordVersions(WORDNAME_XP)      = REGWORD_XP
   WordVersions(WORDNAME_2003)      = REGWORD_2003
   
         '----------------------------------------------------------------------
   ' Test for version
   '----------------------------------------------------------------------
   Forall w In WordVersions
      formula$ = | (@RegQueryValue("HKEY_LOCAL_MACHINE"; "| & w & |";"Path")) |
      v = Evaluate( formula$ )
      If v(0) <> "" Then
         getWordVersion = Listtag(w)
         Exit Function
      End If
   End Forall
   
   getWordVersion = ""
   
End Function

------ SNIP -----

Das kann man bestimmt noch aufbohren, um andere Software abzufragen.

Aber hier noch eine Frage: kann man sicher sein, das alle anderen Werte leer sind, wenn eine neue Version von Word installiert ist?


Gruß,
Christian
Titel: Re: installierte Office Version ermitteln
Beitrag von: eknori am 25.02.05 - 16:25:20
Danke für deinen Tip  :D

Zitat
kann man sicher sein, das alle anderen Werte leer sind, wenn eine neue Version von Word installiert ist?

Ich habe es stichprobenartig mal an mehreren Rechnern bei uns im Betrieb gechecked; sieht so aus, als könnte man sich darauf verlassen, daß nur in der installierten Version der Key vorhanden ist
Titel: Re: installierte Office Version ermitteln
Beitrag von: spookycoder am 12.02.10 - 13:00:18
Hallo zusammen,

srry für die eventuelle Leichenschändung, aber ich fand den Code sehr sehr hilfreich - dickes Danke.

Ich hab ihn ein wenig erweitert, sodass er tatsächlich auf ein installiertes Word prüft, die oben gezeigten Versionen prüfen nur auf ein installiertes Office - konstruierterweise müsste dabei das Word ja gar nicht installiert sein.

So, anbei der Code für Office und Word Prüfung:

Code
Function GetOfficeVersion() As String
   
   Const REGOFFICE_97      = "Software\\Microsoft\\Office\\8.0\\Common\\InstallRoot"
   Const REGOFFICE_2000    = "Software\\Microsoft\\Office\\9.0\\Common\\InstallRoot"
   Const REGOFFICE_XP      = "Software\\Microsoft\\Office\\10.0\\Common\\InstallRoot"
   Const REGOFFICE_2003    = "Software\\Microsoft\\Office\\11.0\\Common\\InstallRoot"
   Const REGOFFICE_2007    = "Software\\Microsoft\\Office\\12.0\\Common\\InstallRoot"
   Const REGOFFICE_2010    = "Software\\Microsoft\\Office\\13.0\\Common\\InstallRoot"
   Const OFFICENAME_97     = "Office 97"
   Const OFFICENAME_2000   = "Office 2000"
   Const OFFICENAME_XP     = "Office XP"
   Const OFFICENAME_2003   = "Office 2003"
   Const OFFICENAME_2007   = "Office 2007"
   Const OFFICENAME_2010   = "Office 2010"
   
   Dim formula As String
   Dim OfficeVersions List As String
   Dim v As Variant
   
   '----------------------------------------------------------------------
   ' Initialize all possible versions
   '----------------------------------------------------------------------
   OfficeVersions(OFFICENAME_97)        = REGOFFICE_97
   OfficeVersions(OFFICENAME_2000)      = REGOFFICE_2000
   OfficeVersions(OFFICENAME_XP)        = REGOFFICE_XP
   OfficeVersions(OFFICENAME_2003)      = REGOFFICE_2003
   OfficeVersions(OFFICENAME_2007)      = REGOFFICE_2007
   OfficeVersions(OFFICENAME_2010)      = REGOFFICE_2010
   
   '----------------------------------------------------------------------
   ' Test for version
   '----------------------------------------------------------------------
   ForAll o In OfficeVersions
      formula$ = | (@RegQueryValue("HKEY_LOCAL_MACHINE"; "| & o & |";"Path")) |
      v = Evaluate( formula$ )
      If v(0) <> "" Then
         GetOfficeVersion = ListTag(o)
         Exit Function
      End If
   End ForAll
   
   GetOfficeVersion = ""
   
End Function


Function GetWordVersion() As String
   
   Const REGWORD_97      = "Software\\Microsoft\\Office\\8.0\\Word\\Common\\InstallRoot"
   Const REGWORD_2000    = "Software\\Microsoft\\Office\\9.0\\Word\\Common\\InstallRoot"
   Const REGWORD_XP      = "Software\\Microsoft\\Office\\10.0\\Word\\Common\\InstallRoot"
   Const REGWORD_2003    = "Software\\Microsoft\\Office\\11.0\\Word\\Common\\InstallRoot"
   Const REGWORD_2007    = "Software\\Microsoft\\Office\\12.0\\Word\\Common\\InstallRoot"
   Const REGWORD_2010    = "Software\\Microsoft\\Office\\13.0\\Word\\Common\\InstallRoot"
   Const WORDNAME_97     = "Word 97"
   Const WORDNAME_2000   = "Word 2000"
   Const WORDNAME_XP     = "Word XP"
   Const WORDNAME_2003   = "Word 2003"
   Const WORDNAME_2007   = "Word 2007"
   Const WORDNAME_2010   = "Word 2010"
   
   Dim formula As String
   Dim WordVersions List As String
   Dim v As Variant
   
   '----------------------------------------------------------------------
   ' Initialize all possible versions
   '----------------------------------------------------------------------
   WordVersions(WORDNAME_97)        = REGWORD_97
   WordVersions(WORDNAME_2000)      = REGWORD_2000
   WordVersions(WORDNAME_XP)        = REGWORD_XP
   WordVersions(WORDNAME_2003)      = REGWORD_2003
   WordVersions(WORDNAME_2007)      = REGWORD_2007
   WordVersions(WORDNAME_2010)      = REGWORD_2010
   
   '----------------------------------------------------------------------
   ' Test for version
   '----------------------------------------------------------------------
   ForAll w In WordVersions
      formula$ = | (@RegQueryValue("HKEY_LOCAL_MACHINE"; "| & w & |";"Path")) |
      v = Evaluate( formula$ )
      If v(0) <> "" Then
         GetWordVersion = ListTag(w)
         Exit Function
      End If
   End ForAll
   
   GetWordVersion = ""
   
End Function

lg

Harald
Titel: Re: installierte Office Version ermitteln
Beitrag von: shiraz am 12.09.11 - 15:46:05
kleine Änderung bei Office 2010


Office 2000 -  9.0
Office XP   - 10.0
Office 2003 - 11.0
Office 2007 - 12.0
Office 2010 - 14.0 !!!!


Gruß
Christian
Titel: Re: installierte Office Version ermitteln
Beitrag von: ata am 13.09.11 - 07:56:08
... das liegt wohl am Apollo-13-Syndrom  ;D ;D ;D

Toni