Running “regedit “filename” to import .reg file from powershell

64-bitwindows-registrywindows-server-2008

I'm trying to import a registry file by running regedit. The problem is that the powershell script has to run from a 32 bit executable, but I want to run the 64 bit regedit. Any ideas on how I can force the use of the 64 bit regedit?

Best Answer

If you explicitly call the executable in the windows directory, you will get the system native version. If you do not specify an absolute path, you will get the WOW64 version.

This will always open 32 bit:

Start-Process regedit

This will open the 64 bit version when on x64, or the 32 bit version when running on a 32 bit machine:

Start-Process "$env:windir\regedit.exe"

If you only want your script to execute on 64 bit, you can detect your running architecture, by checking $env:Processor_Architecture and error out when it doesn't meet your requirements.

Note: This works because 'regedit.exe' is stored in your Windows directory. If you want to access a 64-bit application from a 32-bit context, and the application happens to be in System32 instead, you can use $env:windir\sysnative\<APPLICATION>. $env:windir\sysnative gives you the 64-bit System32 instead of the redirect to SysWOW64.