我正在尝试通过运行 regedit 来导入注册表文件。问题是 powershell 脚本必须从 32 位可执行文件运行,但我想运行 64 位 regedit。关于如何强制使用 64 位 regedit,有什么想法吗?
答案1
如果你明确调用windows目录下的可执行文件,那么你将获得系统原生版本,如果你不指定绝对路径,那么你将获得WOW64版本。
这将始终打开 32 位:
Start-Process regedit
这将在 x64 上打开 64 位版本,或在 32 位机器上运行时打开 32 位版本:
Start-Process "$env:windir\regedit.exe"
如果您只希望脚本在 64 位上执行,您可以检测正在运行的架构,$env:Processor_Architecture
当它不符合您的要求时,就会出现错误。
注意:此方法有效,因为“regedit.exe”存储在您的 Windows 目录中。如果您想从 32 位上下文访问 64 位应用程序,而该应用程序恰好位于 System32 中,则可以使用$env:windir\sysnative\<APPLICATION>
. $env:windir\sysnative
为您提供 64 位,System32
而不是重定向到SysWOW64
。
答案2
尝试reg import
使用sysnative
:
Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>
$env:windir\sysnative
为您提供 64 位System32
而不是 32 位上下文重定向到SysWOW64
。