注册表上的Powershell测试路径取决于主机环境
我遇到了一个奇怪的情况 我想知道此注册表项是否通过运行:注册表上的Powershell测试路径取决于主机环境,powershell,registry,advanced-installer,Powershell,Registry,Advanced Installer,我遇到了一个奇怪的情况 我想知道此注册表项是否通过运行: Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12" 此注册表确实存在于我的测试机上。如果我使用PowerShell控制台(%SystemRoot%\system32\WindowsPowerShell\v1.0\PowerShell.exe)运行此脚本,它将返回true 但是 如果首先通过打开命令提示符运行此脚本,然后运行
Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"
此注册表确实存在于我的测试机上。如果我使用PowerShell控制台(%SystemRoot%\system32\WindowsPowerShell\v1.0\PowerShell.exe)运行此脚本,它将返回true
但是
如果首先通过打开命令提示符运行此脚本,然后运行PowerShell(C:\Windows\system32>C:\Windows\SysWOW64\WindowsPowerShell\v1.0\PowerShell.exe)
然后它将找不到注册表项
我还尝试了其他一些注册表项,其中一些对两个主机都有效。我也在管理模式下测试了它,没有什么不同
这些PowerShell可执行文件(32位与64位)之间有什么不同
为什么其中一个返回的结果与另一个不同(它们对注册表的访问权限是否不同)
我遇到这种情况的原因是我正在使用默认的PowerShell ISE开发一个脚本,但是当我在高级安装程序中将其转换为自定义操作时,它将使用SysWOW64中的PowerShell,并且找不到该项。Windows在注册表中为32位和64位应用程序维护两个单独的部分
有关详细信息,请参阅。因此,在安装之前,您可以指定脚本是否为64位脚本,这将更改要运行的powershell.exe。我想我的主要问题已经解决了。然而,我还是想知道为什么?注册表项是针对SQL Server 2012 64位的,如果我安装SQL Server 2012 32位,这会起作用吗?感谢您提供的信息,这可能是重复的。我发现了另一个相关的问题: