VBScript | 管理者権限のないユーザでソフトウェア等をインストールする方法
・Aさんの端末にソフトウェア等をインストールしたい
・でもその端末にログインしているAさんには管理者権限がない
という状況で、Aさんの端末にソフトウェア等をインストールする方法です。
前提条件
① Aさんの端末には管理者権限を持つユーザが存在すること
② ①のユーザのパスワードが分かっていること
手順
① テキストエディタ(メモ帳等)を開く
② 以下のコードをコピーし、テキストエディタ(メモ帳等)に貼り付ける
Const TASK_NAME = "TEST_TASK" 'タスクスケジューラに登録するタスク名 Const ADMIN_ID = "administrator" '管理者権限ユーザのID Const ADMIN_PASS = "password" '管理者権限IDのパスワード Const INST_EXE_NAME ="C:\TEST\test.exe" 'ソフトウェアのインストーラ― Dim ObjPcNameShell '処理対象端末のコンピュータ名取得用OBJ Dim PcName '処理対象端末のコンピュータ名 Dim ObjNetwork '管理者権限取得用OBJ Dim LogonUserID 'ログオンユーザID Dim IsAdministrator '管理者権限あり=True / なし=False Dim ObjAdminGroup '処理対象端末のAdministratorsグループ取得用OBJ Dim AdminUser '処理対象端末のAdministratorsグループのユーザID Dim ObjExecShell 'インストールEXE実行用OBJ '処理対象端末のコンピュータ名を取得=================================== Set ObjPcNameShell = CreateObject("WScript.Network") PcName = ObjPcNameShell.ComputerName 'ログオンユーザに管理者権限があるか確認=============================== Set ObjNetwork = CreateObject("Wscript.Network") LogonUserID = ObjNetwork.UserName IsAdministrator = false Set ObjAdminGroup = GetObject("WinNT://" & PcName & "/Administrators") For Each AdminUser in ObjAdminGroup.Members If AdminUser.Name = LogonUserID Then IsAdministrator = true End If Next 'インストールEXEを実行================================================ Set ObjExecShell = WScript.CreateObject("WScript.Shell") If IsAdministrator = true Then ''管理者権限があれば直接インストールEXEを実行 ObjExecShell.Run INST_EXE_NAME, vbhide, true Else ''管理者権限がなければタスクスケジューラでインストールEXEを実行する ObjExecShell.Run "cmd /c schtasks.exe /CREATE /RU " & ADMIN_ID & " /RP " & ADMIN_PASS & " /SC ONCE /st " & FormatDateTime(Now(), vbShortTime) & " /TN " & TASK_NAME & " /TR " & INST_EXE_NAME & " /F & schtasks /run /TN " & TASK_NAME, vbhide, true End If Set ObjPcNameShell = Nothing Set ObjNetwork = Nothing Set ObjAdminGroup = Nothing Set ObjExecShell = Nothing
※1~4行目の4つのConstの値は、ご利用の環境に合わせて変更する必要があります 。
※インストーラーの画面は表示されないようにしています。
表示する場合は、2か所の「vbhide」を半角スペースに置換してください。
③ 拡張子を「.vbs」にして保存する
例)TEST.vbs
④ Aさんの端末で実行する
以上