Windows 8 Regedit requer caminhos absolutos passados para arquivos de registro

1

Eu estava construindo um conjunto de scripts em lote para o nosso sistema de compilação / teste automático que executa em diferentes sistemas operacionais para definir algumas condições para os diferentes ambientes e notei que o Windows 8 parece lidar com argumentos de linha de comando regedit.exe diferentemente do Windows XP a 7.

Eu estava executando o comando:

regedit.exe /s relative_path\registry_settings.reg

Isso funcionou corretamente até chegarmos a um nó do Windows 8, ponto no qual ele não emitia nenhum erro, mas seguia em frente como se funcionasse sem fazer nenhuma alteração no registro. (e então toda a minha suíte de testes falhou e me assustou)

Para que o Windows 8 funcione, tive que usar um caminho absoluto:

regedit.exe /s \absolute_path\registry_settings.reg

Esta é uma mudança deliberada da Microsoft ou é provável que exista uma configuração de ambiente que afete isso? Existe uma solução melhor do que usar um caminho absoluto (que é frágil e exigirá mais manutenção futura)?

    
por BlargleMonster 17.06.2014 / 21:03

1 resposta

2

Em um script em lote, você pode usar %~dp0 para representar o diretório que contém o script em lote em execução. Então, se você tivesse arquivos nos seguintes locais:

C:\scripts\script.bat
C:\scripts\relative_path\registry_settings.reg

você pode escrever isso em script.bat :

regedit.exe /s "%~dp0relative_path\registry_settings.reg"

e obtenha todos os benefícios de caminhos relativos e ainda funcione no Windows 8.

    
por 17.06.2014 / 21:10