VBScript and UAC elevation
Vista/7環境ではWSHスクリプトを「管理者として実行」で実行できない。(悪意あるスクリプトを防ぐ/ユーザーアカウント制御(UAC)のため)
それによりレジストリの書き込みなどが出来ない。
(HKCUキー以外の、かな。HKLMには書き込めないのを確認)
そこで以下のスクリプト、7対応。
WSH/OSのバージョンをチェックし、5.7/OS6~ならrunasコマンドを使い、管理者権限で実行しなおす。
これでUACが出て昇格でき、レジストリも書き込める。
- ' 管理者権限に昇格
- ' WScript.Arguemnts.Count = 0:GUI 1:CUI
- do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7
- ' Check WScript5.7~ and Vista~
- Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
- Set os = wmi.ExecQuery("SELECT *FROM Win32_OperatingSystem")
- For Each value in os
- if left(value.Version, 3) < 6.0 then exit do 'Exit if not vista
- Next
- ' Run this script as admin.
- Set sha = CreateObject("Shell.Application")
- sha.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas"
- WScript.Quit
- loop
- ' todo:
- Set WshShell = WScript.CreateObject("WScript.Shell")
- WshShell.RegWrite "HKLM\SOFTWARE\Test\Value", "Test", "REG_SZ"
Windows VistaでのWSH(VBScript)の管理者権限への昇格方法, 思うところはあるがここには書かない - ebi's diary(2008-08-13) http://ebi.dyndns.biz/diary/20080813.html
ORCA愉快日記(2009-05-22):VBScriptでVistaのUACの権限昇格を行う方法 http://hitaki.net/diary/20090522.html
0 件のコメント:
コメントを投稿