このページの内容
このページのタイトルにある通りですが、管理者権限が必要になるフォルダ内のファイルの編集などをVBSriptで行いたい場合に、この機能が必要となります。
ユーザーフォルダ内であれば当然この機能はほとんど必要ないかもしれませんが、例えばProgram Filesフォルダ内やProgramDataフォルダ内の変更を行う時に利用することが出来ます。
私の場合は、インストールしていたアプリケーションの不具合対応で、ProgramDataフォルダ内にある特定のファイル削除が必要になったため、PCがあまり得意ではない人でも簡単に実行できるようにするために作成しました。
※ProgramDataフォルダは隠しフォルダとなっている場合があるため、隠しフォルダの表示の説明からするのが手間だったためVBScriptを配布する形で適用してもらいました。
実行させたいScriptの先頭に、以下の記述を追加するだけでOKです。
但し、この記述では引数を渡して実行することはできません。
Option Explicit
On Error Resume Next
'管理者権限で実行させる
Dim oShellApp
Set oShellApp = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
oShellApp.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
Wscript.Quit
end if
Set oShellApp = Nothing
'これ以降に実行したい処理を記述していく
簡単な解説ですが、
VBScriptファイルをダブルクリックして実行したときは、引数を渡していないため、
if Wscript.Argments.Count = 0 then
の中に入っていきます。
そして、実際にスクリプトを実行する本体であるwscript.exe に引数として、ダブルクリックしたファイルのパス(WScript.ScriptFullNameで取得できる)を渡す際に” runas”, “”, “runas”, 1を管理者権限として実行するための引数として渡して実行させています。
※runas → run as : このあとに記述するユーザーで実行するということです。ただし、今回は自分が実行する
管理者権限を実行するための引数を渡しているので、
if Wscript.Argments.Count = 0 then
のプロセスには入らずに、これ以降の処理へ入っていくことになります。
もちろんこれを実行すると、
“このアプリがデバイスに変更を加えることを許可しますか?”
というメッセージが表示され、”はい”を選択しない限りは実行されないようになっています。