web-dev-qa-db-ja.com

「regedit」ファイル名を実行して、PowerShellから.regファイルをインポートします

Regeditを実行してレジストリファイルをインポートしようとしています。問題は、PowerShellスクリプトを32ビットの実行可能ファイルから実行する必要があることですが、64ビットのregeditを実行したいと思います。 64ビットregeditの使用を強制する方法についてのアイデアはありますか?

2
Kyle

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は、System32へのリダイレクトの代わりに、64ビットのSysWOW64を提供します。

3
Mitch

sysnativeの下でreg importを使用してみてください。

Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>

$env:windir\sysnativeは、System32への32ビットコンテキストリダイレクトの代わりに64ビットSysWOW64を提供します。

3
Kasius