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 diferente do Windows XP até 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 como tal:

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)?

BlargleMonster
fonte
1
Seu roteiro de morcego "cd" para o diretório onde o caminho relativo poderia ser escolhido?
Kinnectus
Como eu acho que o @BigChris está insinuando - você tem certeza de que sua configuração do Windows 8 está deixando você no mesmo caminho que o Windows 7?
Ƭᴇcʜιᴇ007
1
Você está trabalhando com arquiteturas também? Talvez o seu Windows 7 seja x86 e Win 8 x64? Arquivos de programas e arquivos de programas (x86)?
Kinnectus

Respostas:

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ê poderia 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.

William Jackson
fonte
Contanto que o script de morcego esteja na mesma pasta que contém os caminhos relativos que ele está tentando ler de ...?
Kinnectus
@BigChris Eu atualizei minha resposta para torná-la mais explícita.
William Jackson
Isso soa como uma ótima opção, vou tentar e, em seguida, aceitar a resposta se funcionar.
BlargleMonster