“Abrir janela do PowerShell aqui” O comando do menu de contexto do Explorador de Arquivos quebra com nomes de pastas com apóstrofos (aspas simples)

2

No Windows 10, Shift-clique com o botão direito do mouse em uma pasta ou em segundo plano no Gerenciador de arquivos adiciona um comando "OpenPowerShell window here" ao menu de contexto.

No entanto, o comando usado para abrir a janela do PowerShell é mal definido (a partir de pelo menos o release ID 1709 do W10), pois ele supõe incorretamente que os nomes das pastas nunca contêm caracteres ' incorporados:

# !! Breaks with folder names such as "a'b"
powershell.exe -noexit -command Set-Location -literalPath '%V' 

Veja abaixo uma correção, mas observe que ela exige privilégios administrativos.

    
por mklement0 03.04.2018 / 05:38

1 resposta

2

Nota:

  • Esta correção requer privilégios administrativos .
  • CAVEAT : porque, devido ao uso de "..." , o PowerShell avalia o caminho especificado, pois avaliaria um argumento internamente no PowerShell, o comando pode romper com nomes de pastas como $foo - ou pior, resultar na execução de comandos por meio de nomes de pastas cuidadosamente criados e criados com códigos maliciosos.

Abra regedit.exe e aplique as seguintes etapas em ambas das seguintes chaves do Registro : HKEY_CLASSES_ROOT\Directory\shell\Powershell\command e HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command :

  • Preparação: modifique as permissões para que a modificação do valor (o comando do PowerShell) se torne possível:

    • Clique com o botão direito do mouse na subchave command e selecione Permissions...

    • Clique em Advanced e:

      • crie o grupo Administrators o proprietário da chave
      • dê ao grupo Administrators controle total da chave
    • Observação: não tenho conhecimento de nenhum efeito adverso dessas modificações, mas informe-nos se você souber de alguma.
      No entanto, para ser seguro, você pode reverter essas modificações após modificar o comando conforme descrito abaixo, o que implica restaurar a TrustedInstaller security principal como a proprietária da chave command ; Observe que você deve especificá-lo como NT SERVICE\TrustedInstaller .

  • Agora, substitua o valor command da chave (Default) pelo seguinte comando:
    powershell.exe -noexit -command Set-Location -literalPath \"%V\"

Deve ser possível criar um script nas etapas acima.

    
por 03.04.2018 / 05:38