Запуск "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,

Другие вопросы по тегам