用戶帳戶控制(UAC)是Vista以上的系統(tǒng)新引進(jìn)的功能,旨在提高系統(tǒng)的安全性。它限制應(yīng)用程序在標(biāo)準(zhǔn)用戶的權(quán)限下,除非管理員權(quán)限得到提升或驗(yàn)證。
雖然很多人覺(jué)得這個(gè)功能很雞肋,但是以VBS的角度來(lái)看,UAC還是多多少少有點(diǎn)用的。在UAC的限制下,直接雙擊VBS文件只能在標(biāo)準(zhǔn)用戶權(quán)限下運(yùn)行,很多事情是做不了的,比如復(fù)制自身到windows文件夾,或者寫入注冊(cè)表的開(kāi)機(jī)啟動(dòng)項(xiàng)等等。在XP下非常猖獗的暴風(fēng)一號(hào)病毒,放到Win7下也就只能改改文件夾屬性為隱藏罷了,其他什么都做不了。當(dāng)然了,一些不明真相的同學(xué)喜歡把UAC功能關(guān)掉,然后裝個(gè)叫什么359還是361的所謂安全軟件。我也不好多說(shuō)什么,不然會(huì)遭到圍觀的。
雙擊VBS文件系統(tǒng)不會(huì)自動(dòng)彈出UAC窗口是一個(gè)很大的問(wèn)題,因?yàn)檫@大大限制了VBS的功能,很多事情都做不了,怎么解決呢?請(qǐng)看下面的代碼
代碼如下:
For Each objOS in GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
If InStr(objOS.Caption,"XP") = 0 Then
If WScript.Arguments.length = 0 Then
Dim objShell
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
Call Main()
End If
Else
Call Main()
End If
Next
Sub Main()
MsgBox "UAC demon"
End Sub
這是我根據(jù)這個(gè)網(wǎng)站的代碼改寫的,判斷系統(tǒng)版本,如果是XP(普通用戶一般都是XP,如果是2003的話請(qǐng)自己改寫)則直接運(yùn)行代碼,否則調(diào)用Shell.Application對(duì)象的ShellExecute方法,以管理員權(quán)限運(yùn)行腳本。這樣,我們的VBS程序在Vista/Win7系統(tǒng)下也可以像在XP系統(tǒng)那樣為所欲為了。