Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
注册表上的Powershell测试路径取决于主机环境_Powershell_Registry_Advanced Installer - Fatal编程技术网

注册表上的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位,这会起作用吗?感谢您提供的信息,这可能是重复的。我发现了另一个相关的问题: