Use o PowerShell para interpretar os valores do Registro

2

Considere a seguinte chave, como um exemplo

HKEY_CLASSES_ROOT\txtfile\shell\open\command

e seu valor (Default)

%SystemRoot%\system32\NOTEPAD.EXE %1

Esse valor determina o que acontecerá quando você clicar duas vezes em um arquivo .txt . %SystemRoot% e %1 são variáveis que podem ser interpretadas por %código%. Um comando equivalente no PowerShell seria parecido com

$env:SystemRoot\system32\NOTEPAD.EXE $args[0]

No entanto, se você definir o valor do registro como equivalente ao Powershell, ele criará um erro, porque é cmd.exe tentando interpretá-lo e não o PowerShell. O Windows pode ser configurado de forma a permitir que o PowerShell seja o interpretador em vez de cmd.exe ?

    
por Steven Penny 28.04.2014 / 12:47

1 resposta

3

Não, você não pode configurar o Windows para usar variáveis de estilo do PowerShell no Registro. Fazer isso seria uma alteração importante para muitos aplicativos, pois cmd.exe não é o único que pode expandir variáveis de ambiente.

Por exemplo, você pode expandir variáveis de ambiente usando o .NET com:

[Environment]::ExpandEnvironmentVariables('%SystemRoot%\system32\NOTEPAD.EXE %1')

Você também pode inserir %HOME% no dialong de execução ( Win + R ) ou na barra de endereços do Windows Explorer para abrir seu diretório pessoal. Nenhum desses usa cmd.exe para expandir as variáveis.

Aplicativos de terceiros também podem analisar as cadeias e procurar os valores no registro. Devido à preocupação da Microsoft com a compatibilidade com versões anteriores, duvido que o Windows altere a maneira como as variáveis de ambiente são armazenadas no registro.

    
por 28.04.2014 / 15:43