Executando o nome de arquivo “regedit” para importar o arquivo .reg do powershell

2

Estou tentando importar um arquivo de registro executando o regedit. O problema é que o script powershell tem que ser executado a partir de um executável de 32 bits, mas eu quero executar o regedit de 64 bits. Alguma idéia de como eu posso forçar o uso do regedit de 64 bits?

    
por Kyle 24.09.2012 / 16:37

2 respostas

3

Se você chamar explicitamente o executável no diretório do Windows, você obterá a versão nativa do sistema. Se você não especificar um caminho absoluto, você obterá a versão WOW64.

Isso sempre abrirá 32 bits:

Start-Process regedit

Isso abrirá a versão de 64 bits quando em x64, ou a versão de 32 bits quando executada em uma máquina de 32 bits:

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

Se você quiser que seu script seja executado apenas em 64 bits, poderá detectar sua arquitetura em execução, verificando $env:Processor_Architecture e errando quando não atender aos seus requisitos.

Nota: Isso funciona porque o 'regedit.exe' está armazenado no diretório do Windows. Se você deseja acessar um aplicativo de 64 bits de um contexto de 32 bits e o aplicativo estiver no System32, use $env:windir\sysnative\<APPLICATION> . $env:windir\sysnative fornece oSystem32 de 64 bits em vez do redirecionamento para SysWOW64 .

    
por 24.09.2012 / 17:48
3

Tente usar reg import em sysnative :

Start-Process $env:windir\sysnative\reg.exe import <.REG_FILE>

$env:windir\sysnative fornece o redirecionamento de contexto de 64 bits em vez de 32 bits para System32 .

    
por 24.09.2012 / 19:30