株式会社クイックのWebサービス開発blog

HAPPYなエンジニア&デザイナーのブログです

【Windows】管理者権限への昇格(RunasでVBS)

初めまして。シスアド担当のスカイ(甘党)です。

さっそくですが「あるあるPC管理者の悩み」を中心に書いていこうと思います。
そんなわけで今回あるあるPC管理者ネタはVBScript
「管理者権限がないユーザーにも管理者権限が必要なソフトをインストールさせたい!①」です。

今回のネタはソフト配信ツール等が配備されている企業なら全然悩むことないと思うんだけど、
「そんなに頻度もないし導入するほうが手間だ」とか
「でもお高いんでしょ?」とかとか
マンパワーでなんとかならないの?」とかあるあるじゃないでしょうか。

こんな時は(楽するためにも)PC管理者大好きVBScriptの出番ですね。

管理者権限で実行するには色々な方法がありますが、
コマンドプロンプトを管理者として実行する」方法が簡単なのでご紹介します。

今回はShellのRunasコマンドとSendkeysメソッドを利用してみます。

豆知識としてRunasコマンドはVISTAから利用できまして、
現在のログオンユーザとは別のユーザーでのアクセス許可する事ができます。豆知識終了。

動作確認環境はWindows7Pro_32bit、64bit(どちらもドメイン参加済)

他の前提条件としては
 ・ドメインまたはローカル管理者の権限がPCにある事。
 ・VBSを実行できる事。(グループポリシー等により制限がある場合はできません;;)

Set WshShell = CreateObject("Wscript.Shell")
'ローカルユーザの場合はドメイン名のとこ記載不要です。
Return = WshShell.Run("runas /user:『ドメイン名\ユーザー名』 cmd.exe")
WScript.Sleep 1000
WshShell.AppActivate "runas.exe"
WScript.Sleep 1000
'パスワードは上記に記載したユーザーのパスワードを入れて下さい。
WshShell.SendKeys "『パスワード』"
WScript.Sleep 1000
WshShell.SendKeys "{enter}"
WScript.Sleep 1000
WshShell.AppActivate "cmd"
WScript.Sleep 1000
'インストールするファイルのパス(例)c:\test\test.exe
WshShell.SendKeys "『インストールしたいexeのパス』"
WScript.Sleep 1000
WshShell.SendKeys "{enter}"


やったーこれで色々できちゃうぞーーーと喜ばれた方に悲報です。

「あれ?コマンドプロンプト画面実行中にメモ帳とか開くとPASSがゲットできるぞ!?」

そうなのです。最初に申し上げてなかったのですが私の作成したVBSは実行したら終了まで何も操作しないで!って仕様なのです…
exe以外でも利用できるので有用といえば有用なのですけどね!


なので今回の「管理者権限がないユーザーにも管理者権限が必要なソフトをインストールさせたい!①」はお蔵入りに、あるある!!

次回「管理者権限がないユーザーにも管理者権限が必要なソフトをインストールさせたい!②」に続きます。あるある!!