Ajouter l'option «Ouvrir Powershell ici en tant qu'administrateur» au menu contextuel du dossier

15

Je cherchais un moyen d'ouvrir directement une invite Powershell élevée à partir de l'Explorateur Windows, via le menu contextuel du dossier dans lequel je veux ouvrir l'invite.
J'utilise Windows 10 et tous les exemples que j'ai vus jusqu'à présent ont été pour les anciennes versions de Windows. Auparavant, cela fonctionnait sur Windows 8.1, mais la mise à jour vers 10 l'a cassé. J'ai même brièvement fait fonctionner cela sur Windows 10, mais une mise à jour l'a de nouveau interrompu (décembre 2015).

Quelqu'un connaît-il la bonne façon d'ajouter cette fonctionnalité à Windows? Ou est-il voué à être écrasé par les futures mises à jour de Windows?

Astravagrant
la source

Réponses:

20

C'est le seul moyen que je connaisse pour ajouter actuellement cette fonctionnalité aux menus contextuels dans l'Explorateur Windows:

[Exécutez ce script dans une invite PowerShell élevée]

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

Ce script extrait du lien suivant:

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

Je suis certain à 99% que c'était la façon dont je le faisais avant que le dernier correctif Windows `` supprime '' mon paramètre de registre (il a également supprimé certaines autres personnalisations, comme le statut de démarrage de numlock, mais c'est moins ennuyeux).

Si quelqu'un connaît une meilleure approche; c'est-à-dire que ce ne sera pas volatile, alors faites-le moi savoir et j'accepterai cette réponse.

Astravagrant
la source
1
Windows 10 est certainement un problème avec l'UAC. Même "désactivé", c'est un mal de tête constant ._. La seule raison pour laquelle je ne suis pas revenu à Windows 7 est que j'ai maintenant 4 écrans.
Deadly-Bagel
4
Supprimez le -NoProfilecommutateur pour charger automatiquement votre profil lorsque vous lancez l'invite.
Ian Kemp
Notez que si vous souhaitez ajouter une option de menu contextuel "Exécuter le script en tant qu'administrateur" pour les fichiers ps1 eux-mêmes, la section 2 de cette réponse montre comment: stackoverflow.com/a/57033941/2441655
Venryx
1

Je l'ai fait comme ça. Cela fait partie d'un petit menu que j'ai fait. Modifiez-le à votre guise:

[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
la source
0

Voici une copie du fichier reg que j'utilise pour ajouter à la fois CMD et POWERSHELL au menu contextuel BACKGROUND de n'importe quel dossier dans 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
la source