Hebikuzure's Tech Memo

2012年7月15日

コマンド プロンプトから管理者としてコマンドを実行する

Filed under: Windows Tips — hebikuzure @ 7:30 午後

自分の環境の再構築用のメモですが、他の方の役に立つかもしれないので公開します。

Windows Vista 以降に導入されている UAC (ユーザー アカウント制御) の仕組みにより、Windows に管理者権限のある (Administrators グループの) ユーザーとしてログオンしていても、そのセキュリティ コンテキストには自動的に管理者権限は付与されず、管理者権限の必要な動作の実行時には UAC ダイアログが表示され、権限の昇格をユーザーが明示的に承認する必要があるのはよく知られているでしょう。

さて Windows の GUI シェル (Windows エクスプローラー) からプログラムを起動する場合はプログラム アイコン (実行ファイルのアイコンやシュートカット、メニュー、タスクバーのアイコン) を右クリックし、[管理者として実行] を選択することで予め昇格したセキュリティ コンテキストでプログラムを起動することができます。ところがコマンド プロンプトで作業をする場合、コマンド (プログラム) を予め昇格したセキュリティ コンテキストで起動する方法は、標準では用意されていません。標準でサポートされている方法は、コマンド プロンプト (cmd.exe) 自体を予め [管理者として実行] で起動しておくことです。しかしこれでは、作業途中で管理者権限が必要なコマンドを実行しなければならなくなった場合など、別のコマンド プロンプトを改めて管理者として実行しなければならず、面倒です。特に Windows  7 のWindows エクスプローラーの [コマンド ウィンドウをここで開く] (フォルダを Shift を押しながら右クリックするとコンテキスト メニューに表示される) でコマンド プロンプトを開いた場合など、別に開いた管理者権限のコマンド プロンプトでそのフォルダにカレントを移動するのは手間がかかります。

そうしたユーザーの不満もあるのか、通常の権限で起動したコマンド プロンプトから昇格した権限でコマンド (プログラム) を実行するためのツールが、Microsoft から提供されています。このツールの入手方法とインストール方法は以下の通りです。

入手元
New Elevation PowerToys for Windows Vista
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
The Elevation PowerToys and Windows 7
http://blogs.technet.com/b/deploymentguys/archive/2009/01/21/the-elevation-powertoys-and-windows-7.aspx
インストール方法
  1. New Elevation PowerToys for Windows Vista の最初の方 (“At a Glance” セクションの下) にある Elevation2008_06.exe をクリックし、Elevation2008_06.exe をダウンロードします。
  2. The Elevation PowerToys and Windows 7 の記事の下の Elevate_Win7beta_fixed.zip をクリックし、Elevate_Win7beta_fixed.zip をダウンロードします。
  3. Elevation2008_06.exe を実行します。実行すると自己展開されるので、適当なフォルダに展開します。
  4. Windows  7 の場合は Elevate_Win7beta_fixed.zip を展開し、その中の Elevate.vbs を「3.」で展開したフォルダに上書きコピーします。
  5. 「3.」で展開したフォルダを開き、ElevateCommand.infを右クリックて [インストール] を選択します。

同じフォルダには他にも多くの .inf ファイルがあります。これらを利用してインストールすると、Windows エクスプローラーのコンテキスト メニューに [CMD Prompt Here as Administrator] (管理者としてコマンド ウィンドウをここで開く) を追加するなど、多くの機能を追加することができます。詳しくは「3.」のフォルダ内の Readme.txt やダウンロード ページの記事を参考にしてください。

利用方法

通常のコマンド プロンプトで以下のように elevate コマンドを実行します。

elevate [実行したいコマンド [コマンドのオプション]]

ただし elevate は外部コマンド (プログラム) を管理者として実行するための機能なので、cmd.exe の内部コマンド (copy など) には利用できません。 内部コマンドを管理者として実行する場合は、コマンド プロンプトを管理者として実行しなおすか、同等の機能を持つ外部コマンドを利用する (copy の代わりに xcopy や robocopy を使う) ことになります。

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

WordPress.com Blog.