如何检测Microsoft Office版本名称


1

以编程方式,什么是可以获取已安装的Microsoft Office版本名称的方法?我已经尝试了我能找到的每个Powershell命令,VBScript和WMI查询。我已经仔细研究了注册表和文件系统,我找不到收集已安装的Office版本的完美方法。

我能够提出的最接近的方法是使用WMIC查询:

wmic product where "Name like '%Office%'" get name,version

不幸的是,这会返回各种各样的应用程序,即使更精细地过滤它也不会告诉我“Office 16”是“Pro”,“Professional Plus”还是“Office365”。

否则,注册表值为

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Scenario\INSTALL\ProductstoAdd

至少在2016版本上存在,但在旧版本中不存在。它本身不包含友好名称,因此需要进一步编写脚本以将数据转换ProPlusRetail.16_en-us_x-none为“Office 2016 Professional Plus”或O365BusinessRetail.16_en-us_x-none“Office 365 Business(2016)”

我希望有人比巨大的脚本中的一堆if / elseif / elseif语句更简单。


尝试一下这个答案
DrZoo 2016年

该方法仅返回Office版本的“年份”。如上所述,我需要进一步确定“Office 2016 Professional Plus”或“Office 365 Business(2016)”等产品。
Beems 2016年

superuser.com/questions/1097079 / ... 这个脚本看起来非常可靠,但是它并没有告诉你安装了哪个许可证版本...
Kage

我看着那一个。不幸的是,它并不能确定“Office 2016 Professional Plus”和“Office 365 Business(2016)”之间的区别。由于这个问题被低估了,我被迫在Powershell中编写了一个全新的检测脚本,该脚本涉及数十种不同的机制,以获得特定的命名版本。
Beems 2016年

Answers:


2

您可以在注册表中找到已安装的Microsoft Office的名称。该过程可以按照以下步骤自动执行:

检查
32位版本的注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
对于64位版本:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

如果密钥相匹配的产品ID模式之一,按照在Office产品代码GUID的编号方案的说明20162013201020072003XP2000,然后阅读DisplayName核心价值,这实际上是安装的名称办公室。

我还发现了强大的办公室库存扫描工具(ROISCAN),可以对已安装的Microsoft Office版本执行完全搜索。


1
谢谢!我没有意识到Office GUID没有随机化。这肯定有助于检测。
Beems 2016年

1

试试这个:

setlocal enableDelayedExpansion
for /f "tokens=2 delims==" %%O in ('ftype ^|findstr /r /I "\\OFFICE[0-9]*" 2^>nul') do (
    set "verp=%%~O"
    goto :end_for
)
:end_for

for %%P in (%verp%) do (
    set "off_path=%%~dpP"
    for %%V in ("!off_path:~0,-1!") do (

     set "office_version=%%~nV"
     goto :end_for2
    )
)
:end_for2

if [%office_version%] == [] echo No Office installed & goto end
echo %office_version%

:end
endlocal

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.