Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。
設定系スクリプト実行時にUACに邪魔されるのを回避する
投稿者:sunvisor 投稿日時:2010/09/09(木) 09:36
VBSで設定系のスクリプトをWindows 7などで実行すると,UACにひっかかって Access Denied あたりのエラーがでちゃってうまく動作しません。
これを回避する方法をいろいろ調べたのですが。次のサイトなどにあった情報で解決できました。
Windows VistaでのWSH(VBScript)の管理者権限への昇格方法
これらのサイトで採用している方法は,OSのバージョンなどを調べUACにじゃまされそうだったら,Shell.ApplicationのShellExecuteメソッドで自分自信をrunasオプションをつけて呼び出す。というコードを,スクリプトの先頭に書くという方法です。
Shell.Executeの第4引数に"runas"を渡すと,「管理者として実行」したのと同じことになるみたいです。
では,その方法を使って,既存の変更系スクリプトを「管理者として実行」するスクリプトを書いてみました。
Dim objWMI, objShell, osInfo, os
Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set osInfo = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
flag = false
For Each os in osInfo
If left(os.Version, 3) >= 6.0 Then
flag = true
End If
Next
Set objShell=CreateObject("Shell.Application")
If flag Then
' 引数付きでwscriptを管理者権限で再実行
objShell.ShellExecute "wscript.exe", """" & WScript.Arguments(0) & """","","runas",1
Else
objShell.ShellExecute "wscript.exe", """" & WScript.Arguments(0) & """"
End If
このスクリプトに runas.vbs などと名前をつけてデスクトップなどに保存し,実行したいスクリプトをアイコンの上にドラッグ&ドロップすると,OSを判断して必要であれば,runasをつけて実行します。
トラックバック
人気のあるページ
- Robocopyでフォルダをコピー
- Robocopy よく使うオプション
- Active Directoryのユーザ管理 (1)
- SQL Server で文字列の半角/全角変換
- SQL Server 2005からリンクテーブルでOracleに接続する
- Windowsサーバでのレプリケート失敗を解決
- LDAP認証とActive Directory
- SQL Server 2005のデータベースコピーウィザードを使う
- WebClientサービスをポリシーで止める
- ログオン時にドライブやプリンタを割り当てる
- ログオン,ログオフ状況を記録するスクリプト
- 設定系スクリプト実行時にUACに邪魔されるのを回避する
