"PowerShell-Fenster hier öffnen" Der Kontextmenübefehl des Datei-Explorers bricht mit Ordnernamen mit Apostrophen (einfache Anführungszeichen) ab

2

Wenn Sie in Windows 10 bei gedrückter Umschalttaste mit der rechten Maustaste auf einen Ordner oder im Hintergrund im Datei-Explorer klicken, wird dem Kontextmenü der Befehl "OpenPowerShell-Fenster hier" hinzugefügt.

Der Befehl zum Öffnen des PowerShell-Fensters ist jedoch schlecht definiert (ab W10 Release ID 1709), da fälschlicherweise davon ausgegangen wird, dass Ordnernamen niemals eingebettete 'Zeichen enthalten :

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

Ein Update finden Sie weiter unten. Beachten Sie jedoch, dass hierfür Administratorrechte erforderlich sind.

mklement0
quelle

Antworten:

2

Hinweis:

  • Dieser Fix erfordert Administratorrechte .
  • CAVEAT : Denn aufgrund der Verwendung von "..."Powershell den angegebenen Pfad auswertet , wie es ein Argument Powershell-intern auswerten würde, kann der Befehl bricht mit mit Ordnernamen wie $foo- oder, schlimmer noch, führt in der Ausführung von Befehlen durch sorgfältig - und böswillig - gestaltete Ordnernamen.

Öffnen Sie die folgenden Schritte,regedit.exe und wenden Sie sie auf die beiden folgenden Registrierungsschlüssel an : HKEY_CLASSES_ROOT\Directory\shell\Powershell\commandund
HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command:

  • Vorbereitung: Ändern Sie die Berechtigungen so, dass eine Änderung des Werts (PowerShell-Befehl) möglich wird:

    • Klicken Sie mit der rechten Maustaste auf den commandUnterschlüssel und wählen SiePermissions...

    • Klicken Sie auf Advancedund:

      • Machen Sie die AdministratorsGruppe zum Eigentümer des Schlüssels
      • Geben Sie der AdministratorsGruppe die volle Kontrolle über den Schlüssel
    • Hinweis: Mir sind keine nachteiligen Auswirkungen dieser Änderungen bekannt, aber wenn Sie welche kennen, teilen Sie uns dies bitte mit.
      Aus Sicherheitsgründen können Sie diese Änderungen jedoch rückgängig machen, nachdem Sie den Befehl wie unten beschrieben geändert haben. Dies bedeutet, dass der TrustedInstallerSicherheitsprinzipal als Eigentümer des commandSchlüssels wiederhergestellt wird . Beachten Sie, dass Sie es als angeben müssen
      NT SERVICE\TrustedInstaller.

  • Ersetzen Sie nun den Wert des commandSchlüssels (Default)durch den folgenden Befehl:
    powershell.exe -noexit -command Set-Location -literalPath \"%V\"

Es sollte möglich sein, die obigen Schritte zu skripten.

mklement0
quelle