通过SCCM安装后尝试通过registry检测失败

这很简单,我推出了一个程序,一个exe文件。 为了让SCCM知道程序已经安装完毕,它需要'检测'程序,因为它是一个exe文件,这意味着我需要应用手动检测forms。 在这个例子中,我不能使用任何文件,因为版本不区分文件,我需要能够区分不同的版本。

我试过通过registry来做这件事。 这是我做的 – >

SCCM 2012,截图,点击放大

我确认registry在安装后就存在,但无法检测程序。 所以基本的部署工作,但它不能看到这个registry。

为什么?,path是正确的..我已经尝试使用'32'位和无标志。

首先,看到截图的时候,有一件大事尖叫着,那就是Wow6432Node在registry键path中间。

从MSDN:registry中的32位和64位应用程序数据

在64位Windows上,部分registry项是针对32位应用程序和64位应用程序单独存储的,并使用registryredirect器和registryreflection映射到单独的逻辑registry视图,因为应用程序的64位版本可能使用不同的registry项和值比32位版本。

registry树中的redirect子节点由WOW64组件使用名称Wow6432Node自动创build。 因此,最重要的是不要命名您创buildWow6432Node的任何registry项。

在运行64位Windows的机器上, Wow6432Node是registry的一部分,32位应用程序被静默地redirect到(没有应用程序实现)。

在SCCM的registry检测中访问此redirect的方法是让SCCM以与应用程序相同的方式重新定向,方法是勾选“ 此registry项与64位系统上的32位应用程序关联 ”框,您可以看到靠近屏幕截图的中间位置, 从registry项的path中删除\Wow6432Node 。 这意味着SCCM现在知道这个registry键是在32位registry部分find的,无论您是在32位还是64位的机器上,都会在这里查找。


其次,我不知道你的应用程序,但很有可能有一个更简单的方法来做这个检测。

虽然这个应用程序是一个EXE,但EXE只是Windows Installer MSI的一个包装,完全可以(也是非常常见),在这种情况下,您可以非常轻松地使用“Windows Installer”产品代码检测方法。

有几种方法可以通过检查已安装应用程序的testing机器来查找EXE的MSI产品代码。 一种方法是使用WMI命令行界面列出已安装的应用程序及其安装代码,从DOS提示符运行:

 wmic product get Name, IdentifyingNumber 

如果您的应用程序在“识别号码”列表中出现,那么您应该可以将其添加到Windows安装程序检测方法中。