【VBScript】スクリプトが管理者権限かどうかを判定する


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

VBScriptが管理者権限で実行されているかを判定する簡単な方法をご紹介。

はじめに

Windows環境でVBScriptを使っていると、「このスクリプトが管理者権限で実行されているかどうか」を判定したくなる場面があります。
本記事では、簡単にその状態を確認する方法をご紹介します。

管理者権限の判定方法

VBScript自体には、直接的に「現在の実行ユーザーが管理者かどうか」を確認する関数はありません。
しかし、「管理者権限がなければアクセスできない場所」にファイルを書き込もうとすれば、エラーになるため、それを利用して判定できます。

実際のスクリプト

以下が、実際に管理者権限かどうかをチェックするスクリプトです。

Option Explicit

Dim fso, testFile
Dim isAdmin

On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")

' 管理者権限でしか書き込めないパスを指定
testFile = "C:\Workspace\Test\admin_check.txt"

' テストファイルの作成
Dim file
Set file = fso.CreateTextFile(testFile, True)

If Err.Number = 0 Then
    isAdmin = True
    file.Close
    ' テストファイルの削除
    fso.DeleteFile testFile
Else
    isAdmin = False
End If

On Error GoTo 0

If isAdmin Then
    MsgBox "管理者権限で実行されています。", vbInformation
Else
    MsgBox "管理者権限ではありません。", vbExclamation
End If

スクリプトの解説です。
管理者権限がないと書き込みできないパス(サンプルでは、C:\Workspace\Test)を指定します。
ファイルの作成が成功すれば「管理者」、失敗すれば「非管理者」と判断します。
また、成功時には後始末としてファイルを削除しています。
書き込み先のフォルダは、実行環境に応じて適宜調整してください。

こちらのスクリプトですが、書き込みエラーを使用して判定しています。
なので、存在しないフォルダを指定すると、これも書き込みエラーとなり、管理者権限で実行されていないと判定されます。
これを回避するために、事前にフォルダの存在確認を行ってもいいかもしれません。

まとめ

VBScriptでも、少し工夫すれば実行権限の確認が可能です。
システム系のスクリプトや、環境チェックに活用してみてください。

コメント

タイトルとURLをコピーしました