注册表上的 Powershell 测试路径取决于主机环境
Powershell Test-Path on registry depends on host environment
我运行陷入了一个奇怪的境地。
我想知道这个注册表项是否被 运行ning:
Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"
这个注册表确实存在于我的测试机器上。如果我 运行 此脚本使用 PowerShell 控制台 (%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe),它将 return true.
但是
如果我 运行 这个脚本首先打开命令提示符,然后 运行 PowerShell (C:\Windows\system32>C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell。 exe)
那么它将找不到注册表项。
我还尝试了一些其他注册表项,其中一些对两个主机都有效。我也在管理员模式下测试过,没有什么不同。
这些 PowerShell 可执行文件(32 位与 64 位)之间有何不同?
为什么一个 return 会得到与另一个不同的结果(他们对注册表的访问权限不同)?
我 运行 这样做的原因是我正在使用默认的 PowerShell ISE 开发脚本,但是当我在 Advanced Installer 中将其转换为自定义操作时,它会使用 SysWOW64 中的 powershell,但无法找到密钥。
Windows 在注册表中为 32 位和 64 位应用程序维护两个单独的部分。
有关详细信息,请参阅 32-bit and 64-bit Application Data in the Registry。
我运行陷入了一个奇怪的境地。
我想知道这个注册表项是否被 运行ning:
Test-Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\RefCount\SQLSysClrTypes12"
这个注册表确实存在于我的测试机器上。如果我 运行 此脚本使用 PowerShell 控制台 (%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe),它将 return true.
但是
如果我 运行 这个脚本首先打开命令提示符,然后 运行 PowerShell (C:\Windows\system32>C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell。 exe)
那么它将找不到注册表项。
我还尝试了一些其他注册表项,其中一些对两个主机都有效。我也在管理员模式下测试过,没有什么不同。
这些 PowerShell 可执行文件(32 位与 64 位)之间有何不同?
为什么一个 return 会得到与另一个不同的结果(他们对注册表的访问权限不同)?
我 运行 这样做的原因是我正在使用默认的 PowerShell ISE 开发脚本,但是当我在 Advanced Installer 中将其转换为自定义操作时,它会使用 SysWOW64 中的 powershell,但无法找到密钥。
Windows 在注册表中为 32 位和 64 位应用程序维护两个单独的部分。
有关详细信息,请参阅 32-bit and 64-bit Application Data in the Registry。