2

В Windows 10 при щелчке правой кнопкой мыши на папке или в фоновом режиме в проводнике файлов в контекстное меню добавляется команда "Открыть окно OpenPowerShell".

Тем не менее, команда используется , чтобы открыть окно PowerShell плохо определен (по крайней мере W10 выпуска ID 1709) в том , что он ошибочно предполагает , что имена папок не содержат встроенных '

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

Ниже приведено исправление, но обратите внимание, что для этого требуются права администратора.

1 ответ1

2

Замечания:

  • Это исправление требует административных привилегий.
  • CAVEAT: поскольку из-за использования "..." PowerShell оценивает указанный путь так, как если бы он внутренне оценивал аргумент PowerShell, команда может порвать с именами папок, такими как $foo или, что еще хуже, привести к выполнению команд через тщательно - и злонамеренно - созданные имена папок.

Откройте regedit.exe и примените следующие шаги к обоим следующим разделам реестра: HKEY_CLASSES_ROOT\Directory\shell\Powershell\command and
HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command:

  • Подготовка: измените разрешения так, чтобы стало возможным изменение значения (команда PowerShell):

    • Щелкните правой кнопкой мыши по command подразделу и выберите Permissions...

    • Нажмите на Advanced и:

      • сделать группу Administrators владельцем ключа
      • дать группе Administrators полный контроль над ключом
    • Примечание: я не знаю о каких-либо неблагоприятных последствиях этих модификаций, но сообщите нам, если знаете о них.
      Однако для безопасности вы можете отменить эти изменения после изменения команды, как описано ниже, что влечет за собой восстановление участника безопасности TrustedInstaller в качестве владельца ключа command ; обратите внимание, что вы должны указать это как
      NT SERVICE\TrustedInstaller .

  • Теперь замените значение ключа command (Default) по умолчанию) с помощью следующей команды:
    powershell.exe -noexit -command Set-Location -literalPath \"%V\"

Должна быть возможность написания сценария вышеописанных шагов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .