フォルダをShiftキーを押しながら右クリックすると、「コマンド ウィンドウをここで開く」というメニューが表示されます。
コマンド プロンプトでフォルダ内のファイル操作をしたいとき等に使える、とても便利なメニューなのですが一つだけ不満があります。
それは“管理者権限で開けない”ことです。
コマンド プロンプトを管理者として実行してフォルダ移動すれば良いだけなのですが、イチイチCDコマンド入力してパスを入力して…という作業が非常に面倒くさいです。
そこで、VBScript&レジストリ編集で右クリックメニューからフォルダを管理者権限で開けるようにしてみました。
※ 下記スクリプトとレジストリ編集の動作確認はWindows 7(64ビット版)で行いました。
スクリプトファイルの準備
まずは右クリックメニューから実行するスクリプトファイルを準備します。
Option Explicit
Private Const AdminPhrase = "AdminScript"
Dim args
Set args = WScript.Arguments
If args.Count < 1 Then
MsgBox "引数が正しくありません。" & vbCrLf & _
"処理を中止します。", vbExclamation + vbSystemModal
WScript.Quit
ElseIf args.Count < 2 Then
RunasAdminProc args(0)
WScript.Quit
ElseIf args(1) <> AdminPhrase Then
RunasAdminProc args(0)
WScript.Quit
End If
With CreateObject("Shell.Application")
Select Case IsFolderOrFile(args(0))
Case 1: .ShellExecute "cmd.exe", " /k CD /D " & ChrW(34) & args(0) & ChrW(34)
Case 2: .ShellExecute ChrW(34) & args(0) & ChrW(34)
End Select
End With
Private Sub RunasAdminProc(ByVal arg)
'管理者権限でスクリプト実行
Dim com
com = ChrW(34) & WScript.ScriptFullName & ChrW(34) & " " & ChrW(34) & arg & ChrW(34) & " " & AdminPhrase
CreateObject("Shell.Application").ShellExecute "wscript.exe", com, "", "runas"
End Sub
Private Function IsFolderOrFile(ByVal arg)
'フォルダ・ファイル判別
Dim ret
ret = 0 '初期化
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
If .FolderExists(arg) = True Then
ret = 1
ElseIf .FileExists(arg) = True Then
ret = 2
End If
End With
On Error GoTo 0
IsFolderOrFile = ret
End Function
上記コードをvbsファイルとして適当なフォルダ(今回は C:\System\RunAsAdmin.vbs )に保存します。
レジストリ編集
※ 下記レジストリ編集作業は自己責任で行ってください。念のため、事前にレジストリのバックアップを取っておくことをお薦めします。
スクリプトファイルの準備ができたら、今度は右クリックメニューに新しい項目を追加するため、レジストリの編集作業を行います。
- ファイルの右クリックメニュー
- キー:HKEY_CLASSES_ROOT\*\shell\RunAsAdmin
- (既定)エントリ(文字列値):管理者権限で開く(&A)
- Iconエントリ(文字列値):imageres.dll,73
- キー:HKEY_CLASSES_ROOT\*\shell\RunAsAdmin\command
- (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%1”
- フォルダの右クリックメニュー
- キー:HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin
- (既定)エントリ(文字列値):管理者権限で開く(&A)
- Iconエントリ(文字列値):imageres.dll,73
- キー:HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin\command
- (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%1”
- フォルダの背景を右クリックしたときのメニュー
- キー:HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin
- (既定)エントリ(文字列値):管理者権限で開く(&A)
- Iconエントリ(文字列値):imageres.dll,73
- キー:HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin\command
- (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%V”
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\RunAsAdmin] @="管理者権限で開く(&A)" "Icon"="imageres.dll,73" [HKEY_CLASSES_ROOT\*\shell\RunAsAdmin\command] @="\"wscript.exe\" \"C:\\System\\RunAsAdmin.vbs\" \"%1\"" [HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin] @="管理者権限で開く(&A)" "Icon"="imageres.dll,73" [HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin\command] @="\"wscript.exe\" \"C:\\System\\RunAsAdmin.vbs\" \"%1\"" [HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin] @="管理者権限で開く(&A)" "Icon"="imageres.dll,73" [HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin\command] @="\"wscript.exe\" \"C:\\System\\RunAsAdmin.vbs\" \"%V\""
上記レジストリ編集作業を行うと、ファイルの右クリックメニュー、フォルダの右クリックメニュー、フォルダの背景を右クリックしたときのメニューに「管理者権限で開く(A)」メニューが追加されます。
このメニューをクリックすると、フォルダからメニューを実行した場合は、管理者権限でそのフォルダが開かれ(コマンド プロンプト)、ファイルの場合は、管理者権限でそのファイルが開かれます。
ファイルやフォルダのパスをスクリプトに渡して、ShellExecuteの“runas”を使って管理者権限で実行するという、シンプルな仕組みですが、やってみると中々便利です。




























この記事へのコメントはありません。