Windows関連

右クリックメニューからフォルダを管理者権限で開く(コマンド プロンプト)

フォルダをShiftキーを押しながら右クリックすると、「コマンド ウィンドウをここで開く」というメニューが表示されます。

RunAsAdminMenu_01

コマンド プロンプトでフォルダ内のファイル操作をしたいとき等に使える、とても便利なメニューなのですが一つだけ不満があります。

それは“管理者権限で開けない”ことです。

コマンド プロンプトを管理者として実行してフォルダ移動すれば良いだけなのですが、イチイチ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 )に保存します。

レジストリ編集

※ 下記レジストリ編集作業は自己責任で行ってください。念のため、事前にレジストリのバックアップを取っておくことをお薦めします。

スクリプトファイルの準備ができたら、今度は右クリックメニューに新しい項目を追加するため、レジストリの編集作業を行います。

  1. ファイルの右クリックメニュー
    • キー:HKEY_CLASSES_ROOT\*\shell\RunAsAdmin
    • (既定)エントリ(文字列値):管理者権限で開く(&A)
    • Iconエントリ(文字列値):imageres.dll,73

    RunAsAdminMenu_02

    • キー:HKEY_CLASSES_ROOT\*\shell\RunAsAdmin\command
    • (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%1”

    RunAsAdminMenu_03

  2. フォルダの右クリックメニュー
    • キー:HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin
    • (既定)エントリ(文字列値):管理者権限で開く(&A)
    • Iconエントリ(文字列値):imageres.dll,73

    RunAsAdminMenu_04

    • キー:HKEY_CLASSES_ROOT\Folder\shell\RunAsAdmin\command
    • (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%1”

    RunAsAdminMenu_05

  3. フォルダの背景を右クリックしたときのメニュー
    • キー:HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin
    • (既定)エントリ(文字列値):管理者権限で開く(&A)
    • Iconエントリ(文字列値):imageres.dll,73

    RunAsAdminMenu_06

    • キー:HKEY_CLASSES_ROOT\directory\background\shell\RunAsAdmin\command
    • (既定)エントリ(文字列値):”wscript.exe” “C:\System\RunAsAdmin.vbs” “%V”

    RunAsAdminMenu_07

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)」メニューが追加されます。

RunAsAdminMenu_08

このメニューをクリックすると、フォルダからメニューを実行した場合は、管理者権限でそのフォルダが開かれ(コマンド プロンプト)、ファイルの場合は、管理者権限でそのファイルが開かれます。

RunAsAdminMenu_09

ファイルやフォルダのパスをスクリプトに渡して、ShellExecuteの“runas”を使って管理者権限で実行するという、シンプルな仕組みですが、やってみると中々便利です。

関連記事

  1. Windows関連

    [Windows]「AppsFolder」のような特殊フォルダ名を取得する。

    レンタルサーバーのデータベース障害で、先日書いた記事が消え去ってしまっ…

  2. Windows関連

    「ファイル名を指定して実行」からMicrosoft Edgeを起動する

    以前書いた記事で、Microsoft EdgeをVBScriptから起…

  3. Windows関連

    Windows 8.1をインストールしてみました。

    下記の記事にもあるように、開発者向けにWindows 8.1の製品版(…

  4. Windows関連

    Microsoft Edgeの場所

    「Edge 本体 場所」「Microsoft Edge EXE どこ」…

  5. Windows関連

    [Windows 8.1]VB5CCEをインストールしてみました。

    ※ 下記はWindows 8.1 RTM(日本語版・32ビット)に基づ…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP