フォルダを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”を使って管理者権限で実行するという、シンプルな仕組みですが、やってみると中々便利です。
この記事へのコメントはありません。