VBS和UAC用戶帳戶控制實現(xiàn)代碼

字號:


    用戶帳戶控制(UAC)是Vista以上的系統(tǒng)新引進(jìn)的功能,旨在提高系統(tǒng)的安全性。它限制應(yīng)用程序在標(biāo)準(zhǔn)用戶的權(quán)限下,除非管理員權(quán)限得到提升或驗證。
    雖然很多人覺得這個功能很雞肋,但是以VBS的角度來看,UAC還是多多少少有點用的。在UAC的限制下,直接雙擊VBS文件只能在標(biāo)準(zhǔn)用戶權(quán)限下運行,很多事情是做不了的,比如復(fù)制自身到windows文件夾,或者寫入注冊表的開機啟動項等等。在XP下非常猖獗的暴風(fēng)一號病毒,放到Win7下也就只能改改文件夾屬性為隱藏罷了,其他什么都做不了。當(dāng)然了,一些不明真相的同學(xué)喜歡把UAC功能關(guān)掉,然后裝個叫什么359還是361的所謂安全軟件。我也不好多說什么,不然會遭到圍觀的。
    雙擊VBS文件系統(tǒng)不會自動彈出UAC窗口是一個很大的問題,因為這大大限制了VBS的功能,很多事情都做不了,怎么解決呢?請看下面的代碼
    代碼如下:
    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ù)這個網(wǎng)站的代碼改寫的,判斷系統(tǒng)版本,如果是XP(普通用戶一般都是XP,如果是2003的話請自己改寫)則直接運行代碼,否則調(diào)用Shell.Application對象的ShellExecute方法,以管理員權(quán)限運行腳本。這樣,我們的VBS程序在Vista/Win7系統(tǒng)下也可以像在XP系統(tǒng)那樣為所欲為了。