Kyle Asked: 2012-09-25 06:37:48 +0800 CST2012-09-25 06:37:48 +0800 CST 2012-09-25 06:37:48 +0800 CST 运行 "regedit "filename" 从 powershell 导入 .reg 文件 772 我正在尝试通过运行 regedit 导入注册表文件。问题是 powershell 脚本必须从 32 位可执行文件运行,但我想运行 64 位 regedit。关于如何强制使用 64 位注册表编辑器的任何想法? windows-server-2008 2 个回答 Voted Best Answer Mitch 2012-09-25T07:48:07+08:002012-09-25T07:48:07+08:00 如果显式调用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. Kasius 2012-09-25T09:30:32+08:002012-09-25T09:30:32+08:00 尝试使用reg import下sysnative: Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE> $env:windir\sysnative为您提供 64 位System32而不是 32 位上下文重定向到SysWOW64.
如果显式调用windows目录下的可执行文件,就会得到系统原生版本。如果不指定绝对路径,将获得 WOW64 版本。
这将始终打开 32 位:
这将在 x64 上打开 64 位版本,或在 32 位机器上运行时打开 32 位版本:
如果您只希望您的脚本在 64 位上执行,您可以通过检查
$env:Processor_Architecture
并在不符合您的要求时出错来检测您的运行架构。注意:这是有效的,因为“regedit.exe”存储在您的 Windows 目录中。如果您想从 32 位上下文访问 64 位应用程序,而该应用程序恰好位于 System32 中,您可以使用
$env:windir\sysnative\<APPLICATION>
.$env:windir\sysnative
为您提供 64 位System32
而不是重定向到SysWOW64
.尝试使用
reg import
下sysnative
:$env:windir\sysnative
为您提供 64 位System32
而不是 32 位上下文重定向到SysWOW64
.