首页 > 解决方案 > 如何在不重定向到 WOW6432Node 的情况下使用 32 位 Powershell 访问 64 位注册表项

问题描述

我有一个简短的 Powershell 脚本,它应该在以下注册表路径中设置一个值:

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"

我的问题是,脚本可以工作,但是当它从 32 位环境运行时(实际上我们使用自动调用脚本的 32 位自定义应用程序),调用被重定向到

HKEY_LOCAL_MACHINE\SOFTWARE\ WOW6432Node \Microsoft\Windows NT\CurrentVersion\Accessibility

并且该项目设置在那里,因此它没有按预期工作。

如何在 32 位和 64 位 Windows 10 系统上访问正确的注册表路径 HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility,无论脚本是从 32 位还是 64 位命令行运行的?

标签: windowspowershellwindows-10syswow64

解决方案


看来您可以只测试系统的 64 位兼容性,然后相应地提供正确的参数值:

if ([Environment]::Is64BitOperatingSystem) {
    Set-ItemProperty "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"
}
else {
    Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility"  -Name "Configuration" -Value "osk"
}

推荐阅读