Ext JS に関しては,新しい記事は Sunvisor Lab. ExtJS 別館 にあります。そちらもよろしくお願いいたします。

設定系スクリプト実行時にUACに邪魔されるのを回避する

 VBSで設定系のスクリプトをWindows 7などで実行すると,UACにひっかかって Access Denied あたりのエラーがでちゃってうまく動作しません。

これを回避する方法をいろいろ調べたのですが。次のサイトなどにあった情報で解決できました。

VBScriptでVistaのUACの権限昇格を行う方法

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をつけて実行します。

トラックバック


URL から "-MoIyadayo" を削除してトラックバックを送信してください。
トラックバックは承認後に表示されます。

Windows7で設定した特定のプログラムのみUAC回避させる方法

 

こんにちは。
 
UACの管理者権限昇格ダイアログについて、情報を提供いたします。
もしよろしければ、直リンクでも貼ってください。
 
UACの回避方法ですが、
 
内容は、Windows7の機能だけで出来る方法。 
ソフトのインスコとかなし。 
「優先度の設定」が「通常以下」になることもなし。 
 
Windows7で設定した特定のプログラムのみUAC回避させる方法