Regeditを実行してレジストリファイルをインポートしようとしています。問題は、PowerShellスクリプトを32ビットの実行可能ファイルから実行する必要があることですが、64ビットのregeditを実行したいと思います。 64ビットregeditの使用を強制する方法についてのアイデアはありますか?
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
を提供します。
sysnative
の下でreg import
を使用してみてください。
Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>
$env:windir\sysnative
は、System32
への32ビットコンテキストリダイレクトの代わりに64ビットSysWOW64
を提供します。