Agregue la opción 'Abrir Powershell aquí como administrador' al menú contextual de la carpeta

15

He estado buscando una manera de abrir una solicitud de Powershell elevada desde el Explorador de Windows directamente, a través del menú contextual de la carpeta en la que quiero abrir la solicitud.
Estoy usando Windows 10 y todos los ejemplos que he visto hasta ahora tienen sido para versiones anteriores de Windows. Anteriormente tenía esto trabajando en Windows 8.1, pero la actualización a 10 lo rompió. Incluso conseguí que esto funcionara brevemente en Windows 10, pero una actualización lo rompió nuevamente (diciembre de 2015).

¿Alguien sabe la forma correcta de agregar esta función a Windows? ¿O está condenado a ser sobrescrito por futuras actualizaciones de Windows?

Astravagante
fuente

Respuestas:

20

Esta es la única manera que conozco para agregar actualmente esta característica a los menús contextuales en el Explorador de Windows:

[Ejecute este script en un indicador de PowerShell elevado]

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

Este script tomado del siguiente enlace:

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

Estoy 99% seguro de que esta fue la forma en que lo hice antes de que el último parche de Windows 'eliminara' mi configuración de registro (también eliminó algunas otras personalizaciones, como el estado de arranque de numlock, pero eso es menos molesto).

Si alguien conoce un mejor enfoque; es decir, eso no será volátil, entonces avíseme y aceptaré esa respuesta.

Astravagante
fuente
1
Windows 10 ciertamente es un dolor con UAC. Incluso "deshabilitado" es un dolor de cabeza constante ._. La única razón por la que no he vuelto a Windows 7 es porque ahora tengo 4 pantallas.
Deadly-Bagel
44
Elimine el -NoProfileinterruptor para cargar su perfil automáticamente cuando inicie la solicitud.
Ian Kemp
Tenga en cuenta que si desea agregar una opción de menú contextual "Ejecutar script como administrador" para los propios archivos ps1, la sección 2 de esta respuesta muestra cómo: stackoverflow.com/a/57033941/2441655
Venryx
1

Lo he estado haciendo así. Es parte de un pequeño menú que hice. Edítalo a tu gusto:

[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
fuente
0

Aquí hay una copia del archivo de registro que uso para agregar CMD y POWERSHELL al menú contextual ANTECEDENTES de cualquier carpeta en 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
fuente