Добавить опцию «Открыть Powershell здесь как администратор» в контекстное меню папки

15

Я искал способ открыть приглашение Powershell с повышенными правами непосредственно из Проводника Windows через контекстное меню папки, в которой я хочу открыть приглашение.
Я использую Windows 10, и все примеры, которые я видел до сих пор, имеют был для старых версий Windows. Раньше у меня это работало на Windows 8.1, но обновление до 10 сломало его. Я даже немного поработал над Windows 10, но обновление сломало его снова (декабрь 2015).

Кто-нибудь знает правильный способ добавить эту функцию в Windows? Или это обречено быть перезаписано будущими обновлениями Windows?

Astravagrant
источник

Ответы:

20

Это единственный известный мне способ добавления этой функции в контекстные меню в проводнике Windows:

[Запустите этот скрипт в командной строке с повышенными привилегиями]

$menu = 'Open Windows PowerShell Here as Administrator'
$command = "$PSHOME\powershell.exe -NoExit -NoProfile -Command ""Set-Location '%V'"""

'directory', 'directory\background', 'drive' | ForEach-Object {
    New-Item -Path "Registry::HKEY_CLASSES_ROOT\$_\shell" -Name runas\command -Force |
    Set-ItemProperty -Name '(default)' -Value $command -PassThru |
    Set-ItemProperty -Path {$_.PSParentPath} -Name '(default)' -Value $menu -PassThru |
    Set-ItemProperty -Name HasLUAShield -Value ''
}

Этот скрипт взят по следующей ссылке:

http://www.powershellmagazine.com/2013/06/25/pstip-how-to-start-an-elevated-powershell-from-windows-explorer/

Я на 99% уверен, что так я и делал до того, как последнее исправление Windows «удалило» мой параметр реестра (также были удалены некоторые другие настройки, такие как состояние загрузки numlock, но это менее раздражает).

Если кто-нибудь знает лучший подход; то есть это не будет изменчивым, тогда, пожалуйста, дайте мне знать, и я приму этот ответ.

Astravagrant
источник
1
Windows 10, безусловно, является проблемой с UAC. Даже «отключен» это постоянная головная боль. Единственная причина, по которой я не вернулся к Windows 7, в том, что у меня теперь 4 экрана.
Смертельный бублик
4
Удалите -NoProfileпереключатель, чтобы ваш профиль автоматически загружался при запуске запроса.
Ян Кемп
Обратите внимание, что если вы хотите добавить параметр контекстного меню «Запускать скрипт от имени администратора» для самих файлов ps1, в разделе 2 этого ответа показано, как: stackoverflow.com/a/57033941/2441655
Venryx
1

Я делал это так. Это часть небольшого меню, которое я сделал. Отредактируйте его по своему вкусу:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OAPS.Tools]
"ImpliedSelectionModel"=dword:00000001
"Icon"="imageres.dll,-5373"
"ExplorerCommandHandler"="{BF0AC53F-D51C-419F-92E3-2298E125F004}"
@="Admin Pshell Here"
pbanj
источник
0

Вот копия reg-файла, который я использую для добавления CMD и POWERSHELL в контекстное меню BACKGROUND любой папки в Windows 10:

Windows Registry Editor Version 5.00

;Add_Open_CMD_and_Powershell_to_Context_Menu.reg

;Right-Click Background only

;CMD Prompt

[HKEY_CLASSES_ROOT\Directory\Background\shell\01MenuCmd] "MUIVerb"="Command Prompts" "Icon"="cmd.exe" "ExtendedSubCommandsKey"="Directory\Background\ContextMenus\MenuCmd"

[HKEY_CLASSES_ROOT\Directory\Background\shell\01MenuCmd] "MUIVerb"="Command Prompts" "Icon"="cmd.exe" "ExtendedSubCommandsKey"="Directory\Background\ContextMenus\MenuCmd"

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuCmd\shell\open] "MUIVerb"="Command Prompt" "Icon"="cmd.exe"

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuCmd\shell\open\command] @="cmd.exe /s /k pushd \"%V\""

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuCmd\shell\runas] "MUIVerb"="Command Prompt Elevated" "Icon"="cmd.exe" "HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuCmd\shell\runas\command] @="cmd.exe /s /k pushd \"%V\""

; PowerShell

[HKEY_CLASSES_ROOT\Directory\Background\shell\02MenuPowerShell] "MUIVerb"="PowerShell Prompts" "Icon"="powershell.exe" "ExtendedSubCommandsKey"="Directory\Background\ContextMenus\MenuPowerShell"

[HKEY_CLASSES_ROOT\Directory\Background\shell\02MenuPowerShell] "MUIVerb"="PowerShell Prompts" "Icon"="powershell.exe" "ExtendedSubCommandsKey"="Directory\Background\ContextMenus\MenuPowerShell"

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuPowerShell\shell\open] "MUIVerb"="PowerShell" "Icon"="powershell.exe"

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuPowerShell\shell\open\command] @="powershell.exe -noexit -command Set-Location '%V'"

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuPowerShell\shell\runas] "MUIVerb"="PowerShell Elevated" "Icon"="powershell.exe" "HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\ContextMenus\MenuPowerShell\shell\runas\command] @="powershell.exe -noexit -command Set-Location '%V'"

bobkush
источник