PowerShell に限らず、 Windows では UAC 導入以降は 管理者権限 (RunAs) が重要な位置づけであることが明示されてきました。
Linux の世界では、 su や sudo でずいぶん以前から管理されてきたのを考えると、 ようやく感は拭えませんしまだまだ不便なのは否めませんが。
さて、管理者として実行するには、 Explorer からであれば 以前紹介したショートカットキー (Shift + Ctrl + その実行ファイル) でもいいでしょう。
また、現在のディレクトリで管理者としてPowerShell を起動するには ファイルメニュー > PowerShell > 管理者と起動 と手間です。
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211650&authkey=AG381QJGG7Kj3gQ" width="319" height="222"]
それなら、 右クリック (所謂 Cointext memu) を拡張して、 現在のディレクトリでPowerShell を起動させてみましょう。
レジストリ の編集 を扱うにあたり
Context Menu = Shell = Registry ですね。
ということで、レジストリ編集を扱います。
例によって、レジストリ編集は、お使いのコンピュータの動作が不安定になる可能性があるので、「理解、了承しているヒト」のみが、ご自身の責任の上で行ってください。
私はやり方を紹介できますが、責任はとれませんことをご理解、ご容赦のほどお願いいたします。
対象レジストリキー
以下のキーを起点とします。
HKEY_CLASSES_ROOT\Directory\shell
HKEY_CLASSES_ROOT\Directory\Background\shell
HKEY_CLASSES_ROOT\Drive
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211651&authkey=AISH9-AQ4oyCcRk" width="293" height="320"]
それぞれに
runas/command
キーを作成します。
作成するプロパティ
それぞれの command キー に次の Value を作成します。
(default)
HasLUAShield
(default) には、 Context Menu で表示する名称をいれます。
Open PowerShell as Administartor
powershell 起動コマンドはこれです。 (x64です)
"$PSHOME\powershell.exe -NoExit -NoProfile -Command ""Set-Location '%V'"""
Cmdletにして実行してみる
Context Menu に Elevate された実行ファイルを渡すコマンドです。
#Requires -Version 3.0
function Set-ElevatedContextMenu{
param(
[ValidateNotNullorEmpty()]
[PSCustomObject]
$AddRegValues = $null
)
$RegKeys = @(
"directory",
"directory\background",
"drive"
)
foreach ($RegKey in $RegKeys){
$AddRegValues | %{
$ContextMenu = $_.ContextMenus
$command = $_.commands
$version = $_.versions
New-Item -Path "Registry::HKEY_CLASSES_ROOT\$RegKey\shell" -Name runas\command -Force `
| Set-ItemProperty -Name "(default)" -Value $command -PassThru `
| Set-ItemProperty -Path {$_.PSParentPath} -Name '(default)' -Value $ContextMenu -PassThru `
| Set-ItemProperty -Name HasLUAShield -Value ''
}
}
}
実行はこのようにします。
例えば、 PowerShell 64bit をだすならこうです。
$AddRegValues = [PSCustomObject]@{
ContextMenus = "Open Windows PowerShellx64 as Administrator"
commands = "$PSHOME\powershell.exe -NoExit -NoProfile -Command ""Set-Location '%V'"""
versions = "PowerShellx64"
}
Set-ElevatedPowerShellContextMenu -AddRegValues $AddRegValues
これで、Registryにキーが追加されていることが分かります。
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211656&authkey=AOSdj4G5rsFamAs" width="319" height="171"]
ディレクトリ/ドライブ/ディレクトリの空欄右クリックでContext Menu にも追加されていますね。
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211657&authkey=AMggHENcL19PEK0" width="319" height="253"]
複数設定できないのか
少し試したんですが、出来なくてぐもも。
どうやるんですかね。