注册表上的Powershell Test-Path取决于主机环境

时间:2017-01-06 21:21:14

标签: powershell registry advanced-installer

我遇到了一个奇怪的情况。

我想通过运行来了解这个注册表项是否正确:

Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"

此注册表确实存在于我的测试计算机上。如果我使用PowerShell控制台(%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe)运行此脚本,它将返回true。

BUT

如果我首先打开命令提示符运行此脚本,则运行PowerShell(C:\ Windows \ system32> C:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe)

然后它将找不到注册表项。

我还尝试了其他一些注册表项,其中一些适用于两个主机。我也在管理模式下进行了测试,没有做出与众不同的事。

这些PowerShell可执行文件(32位与64位)之间有何不同?

为什么会返回与另一个不同的结果(他们对注册表有不同的访问权限)?

我遇到这个问题的原因是我正在使用默认的PowerShell ISE开发脚本,但是当我将其转换为高级安装程序中的自定义操作时,它将在SysWOW64中使用powershell,并且找不到钥匙。

1 个答案:

答案 0 :(得分:1)

Windows在注册表中为32位和64位应用程序维护了两个单独的部分。

有关详细信息,请参阅32-bit and 64-bit Application Data in the Registry