Запуск "regedit " имя файла "для импорта файла.reg из powershell
Я пытаюсь импортировать файл реестра, запустив regedit. Проблема в том, что скрипт powershell должен запускаться из 32-битного исполняемого файла, но я хочу запустить 64-битный regedit. Любые идеи о том, как я могу заставить использование 64-битного regedit?
2 ответа
Если вы явно вызовете исполняемый файл в каталоге Windows, вы получите системную версию. Если вы не укажете абсолютный путь, вы получите версию WOW64.
Это всегда откроет 32 бит:
Start-Process regedit
Это откроет 64-битную версию на x64 или 32-битную на 32-битной машине:
Start-Process "$env:windir\regedit.exe"
Если вы хотите, чтобы ваш скрипт выполнялся только в 64-битной среде, вы можете определить работающую архитектуру, проверив $env:Processor_Architecture
и ошибка, когда она не соответствует вашим требованиям.
Примечание: это работает, потому что "regedit.exe" хранится в вашем каталоге Windows. Если вы хотите получить доступ к 64-битному приложению из 32-битного контекста, и вместо этого приложение находится в System32, вы можете использовать $env:windir\sysnative\<APPLICATION>
, $env:windir\sysnative
дает вам 64-битный System32
вместо перенаправления на SysWOW64
,
Попробуйте использовать reg import
под sysnative
:
Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>
$env:windir\sysnative
дает вам 64-битный System32
вместо 32-разрядного контекста перенаправления на SysWOW64
,