El comando del menú contextual del Explorador de archivos "Abrir ventana de PowerShell aquí" se rompe con nombres de carpetas con apóstrofos (comillas simples)

2

En Windows 10, al hacer clic con el botón derecho en una carpeta o en segundo plano en el Explorador de archivos, se agrega un comando "Ventana de OpenPowerShell aquí" al menú contextual.

Sin embargo, el comando utilizado para abrir la ventana de PowerShell está mal definido (al menos a partir de la versión W10 ID 1709), ya que supone incorrectamente que los nombres de las carpetas nunca contienen 'caracteres incrustados :

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

Vea a continuación una solución, pero tenga en cuenta que requiere privilegios administrativos.

mklement0
fuente

Respuestas:

2

Nota:

  • Esta solución requiere privilegios administrativos .
  • CAVEAT : Debido a que, debido al uso de "...", PowerShell evalúa la ruta especificada, ya que evaluaría un argumento de PowerShell internamente, el comando puede romperse con nombres de carpeta como $foo, o, lo que es peor, dar lugar a la ejecución de comandos con cuidado y maliciosamente - nombres de carpetas elaborados.

Abra regedit.exey aplique los siguientes pasos a las dos claves de registro siguientes : HKEY_CLASSES_ROOT\Directory\shell\Powershell\commandy
HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command:

  • Preparación: modifique los permisos para que sea posible la modificación del valor (el comando PowerShell):

    • Haga clic derecho en la commandsubclave y seleccionePermissions...

    • Haga clic en Advancedy:

      • hacer que el Administratorsgrupo sea el dueño de la clave
      • dar al Administratorsgrupo el control total de la clave
    • Nota: No tengo conocimiento de ningún efecto adverso de estas modificaciones, pero sí nos lo notifique.
      Sin embargo, para estar seguro, puede revertir estas modificaciones después de modificar el comando como se describe a continuación, lo que implica restaurar el TrustedInstallerprincipal de seguridad como el propietario de la commandclave; tenga en cuenta que debe especificarlo como
      NT SERVICE\TrustedInstaller.

  • Ahora reemplace el valor de la commandclave (Default)con el siguiente comando:
    powershell.exe -noexit -command Set-Location -literalPath \"%V\"

Debería ser posible escribir los pasos anteriores.

mklement0
fuente