LoginSignup
2
6

More than 3 years have passed since last update.

[VBScript] 管理者権限でインストーラーを起動[Windows]

Posted at

目的

社内のPCを管理しています。そうすると管理者権限が必要なソフトウェアを
インストールしてくれーとの要望(苦情)をけっこう頂きます。

1台、2台なら、さくっとインストールしちゃうのですが、
拠点が離れているとそれも難しいです。

できるなら、ユーザにインストールして欲しい、とはいえ!
管理者権限のユーザ名やパスワードを教えるのも怖い。

ということで、解決策を検討しました。

解決策

そうだ!プログラムにパスワードを埋め込んで、
ユーザに見えなくしちゃえばいいんだ!

ということで、以下の手法を試してみました。

  1. VBScriptで管理者権限でインストーラーを起動する
  2. vbsファイルをexeに変換(難読化)
  3. exeをユーザに公開すれば、みんなハッピー!

1. VBScriptで管理者権限でインストーラーを起動する

「管理者権限ユーザ名」「パスワード」「インストーラーへのフルパス」を
書き換えて保存してください。

  ' cmdプロンプトの起動待ち時間(ms)
  Const waitingTime = 2000

    ' Shell関連の操作を提供するオブジェクトを取得
    Set objShell = WScript.CreateObject("WScript.Shell")

    ' インストーラーを管理者権限で起動
    objShell.Run "runas /user:管理者権限ユーザ名 " & "インストーラーへのフルパス"
    WScript.Sleep waitingTime 

    ' パスワード入力
    objShell.SendKeys( "パスワード" )
    objShell.SendKeys( "{ENTER}" )

2. vbsファイルをexeに変換(難読化)

作成したvbsを以下サイトを参考に変換しました。

VBScriptファイルをEXEファイルに変換、デスクトップアイコンを変更

簡単にまとめると
Script Encoder で .vbs → .vbe へ変換(難読化)し、
MakeExe で .vbe → .exeに変換します。

3. exeをユーザに公開すれば、みんなハッピー!

ユーザが自分でインストールできるようになります!

総括

これで目的は達成できました!が、インストーラー名が変わると
exeを再作成する必要があって少々面倒です。

TODO:
1. インストーラーは起動時にユーザ指定できるようにする(→ ファイル参照ダイアログ)
2. 若干、安全性に懸念(難読化しただけ、デコードできるかも?)

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6