Я пытаюсь импортировать файл реестра, запустив regedit. Проблема в том, что сценарий PowerShell должен запускаться из 32-битного исполняемого файла, но я хочу запустить 64-битный regedit. Есть идеи, как я могу заставить использовать 64-битный regedit?
Попробуйте использовать reg import
под sysnative
:
Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>
$env:windir\sysnative
дает вам 64-битный System32
вместо 32-битного перенаправления контекста на SysWOW64
.
Если вы явно вызовете исполняемый файл в каталоге 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
.