目的
社内のPCを管理しています。そうすると管理者権限が必要なソフトウェアを
インストールしてくれーとの要望(苦情)をけっこう頂きます。
1台、2台なら、さくっとインストールしちゃうのですが、
拠点が離れているとそれも難しいです。
できるなら、ユーザにインストールして欲しい、とはいえ!
管理者権限のユーザ名やパスワードを教えるのも怖い。
ということで、解決策を検討しました。
解決策
そうだ!プログラムにパスワードを埋め込んで、
ユーザに見えなくしちゃえばいいんだ!
ということで、以下の手法を試してみました。
- VBScriptで管理者権限でインストーラーを起動する
- vbsファイルをexeに変換(難読化)
- 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:
- インストーラーは起動時にユーザ指定できるようにする(→ ファイル参照ダイアログ)
- 若干、安全性に懸念(難読化しただけ、デコードできるかも?)