Назад | Перейти на главную страницу

Запуск "regedit" filename "для импорта файла .reg из PowerShell

Я пытаюсь импортировать файл реестра, запустив 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.