Dodaj opcję „Otwórz Powershell tutaj jako administrator” do menu kontekstowego folderu

15

Szukałem sposobu, aby otworzyć podniesiony monit Powershell bezpośrednio z Eksploratora Windows, poprzez menu kontekstowe folderu, w którym chcę otworzyć monit.
Korzystam z systemu Windows 10 i wszystkie przykłady, które do tej pory widziałem, mają był dla starszych wersji systemu Windows. Wcześniej miałem to działające w systemie Windows 8.1, ale aktualizacja do 10 go zepsuła. Nawet na krótko dostałem ten system na Windows 10, ale aktualizacja go ponownie zepsuła (grudzień 2015).

Czy ktoś zna prawidłowy sposób dodania tej funkcji do systemu Windows? A może skazane na zastąpienie przez przyszłe aktualizacje systemu Windows?

Astravagrant
źródło

Odpowiedzi:

20

To jedyny znany mi sposób na dodanie tej funkcji do menu kontekstowych w Eksploratorze Windows:

[Uruchom ten skrypt w wierszu polecenia z podwyższonym poziomem uprawnień]

$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 ''
}

Ten skrypt pochodzi z następującego linku:

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

Jestem w 99% pewien, że tak właśnie zrobiłem, zanim najnowsza łata systemu Windows „usunęła” moje ustawienia rejestru (usunęła również kilka innych dostosowań, takich jak status uruchamiania Numlock, ale to mniej denerwujące).

Jeśli ktoś zna lepsze podejście; tzn. to nie będzie niestabilne, więc proszę dać mi znać, a ja zaakceptuję tę odpowiedź.

Astravagrant
źródło
1
Windows 10 z pewnością sprawia problemy z UAC. Nawet „wyłączone” to ciągły ból głowy ._. Jedynym powodem, dla którego nie wróciłem do systemu Windows 7, jest to, że mam teraz 4 ekrany.
Deadly-Bagel
4
Usuń -NoProfileprzełącznik, aby automatycznie załadować profil po uruchomieniu monitu.
Ian Kemp
Uwaga: jeśli chcesz dodać opcję menu kontekstowego „Uruchom skrypt jako administrator” dla samych plików ps1, sekcja 2 tej odpowiedzi pokazuje, jak: stackoverflow.com/a/57033941/2441655
PS1
1

Robiłem to w ten sposób. Jest to część małego menu, które przygotowałem. Edytuj go według własnych upodobań:

[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
źródło
0

Oto kopia pliku reg, którego używam do dodawania zarówno CMD, jak i POWERSHELL do menu kontekstowego dowolnego tła w systemie 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
źródło