2014年07月11日


VBScript で『管理者として実行を強制する』処理

freefont_logo_hkreikk.png
昨今の Windows では、管理者権限が無いと失敗する処理が増えました。これは、バッチで自動化する時には使用できませんが、PC の前に操作員が居るという前提で実行可能です。

この処理は、右クリックで表示されるメニューの中の『管理者として実行』という項目に該当し、本来の英語表示は『runas』であると思われ、スクリプトの Operation"runas" を引き渡すと実現できます。

Shell.ShellExecute method

注意するのは、以下のコードでは VBScript に対して引数がある場合は利用できないと言う事です。引数がある場合はその引数の数に合わせてカスタマイズする必要があります。

ここでは、引数が無いという前提なので、次に実行する場合はダミーで "runas" という引数を渡しています。WScript.ScriptFullName & " runas"wscript.exe に対する引数で、runas が スクリプトに対する引数です。

こうする事によって、2回目の実行は、管理者権限で実行されている状態で、if Wscript.Arguments.Count = 0 then を通り抜ける事になります。

ShellExecute の3番目の引数が省略されていますが、これは作業ディレクトリの指定で、このパラメータを指定しない場合、現在の作業ディレクトリが使用されます。

ShellExecute の5番目引数は、ウインドウの表示方法で、1 は、ノーマル表示を意味します。
' 管理者として実行を強制する
Set obj = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
	obj.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
	Wscript.Quit
end if

Wscript.Echo WScript.Arguments(0)





タグ:SHELL
posted by at 13:04 | Comment(0) | Shell.Application | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。