可能將此(WhoAmI from VBscript)與此(UAC Turned On)組合。
下面是代碼,不幸的預-REQ XP的是「whoami.exe」,在資源工具包或者支持工具發現XP(Wikipedia) - 我還是想找到一種方法離不開它。
If UserPerms("Admin") Then
Message = "Good to go"
Else
Message = "Non-Admin"
End If
If UACTurnedOn = true Then
Message = Message & ", UAC Turned On"
Else
Message = Message & ", UAC Turned Off (Or OS < Vista)"
End If
Wscript.echo Message
Function UserPerms (PermissionQuery)
UserPerms = False ' False unless proven otherwise
Dim CheckFor, CmdToRun
Select Case Ucase(PermissionQuery)
'Setup aliases here
Case "ELEVATED"
CheckFor = "S-1-16-12288"
Case "ADMIN"
CheckFor = "S-1-5-32-544"
Case "ADMINISTRATOR"
CheckFor = "S-1-5-32-544"
Case Else
CheckFor = PermissionQuery
End Select
CmdToRun = "%comspec% /c whoami /all | findstr /I /C:""" & CheckFor & """"
Dim oShell, returnValue
Set oShell = CreateObject("WScript.Shell")
returnValue = oShell.Run(CmdToRun, 0, true)
If returnValue = 0 Then UserPerms = True
End Function
Function UACTurnedOn()
On Error Resume Next
Set oShell = CreateObject("WScript.Shell")
If oShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA") = 0 Then
UACTurnedOn = false
Else
UACTurnedOn = true
End If
End Function
有趣的方法;你應該添加一個>>如果UserPerms(「Elevated」)Then Message = Message&「,但在」UAC打開「行後面運行提升」<<「。 whoami.exe是一個真正的缺點,尤其是因爲我不確定你是否允許重新分配它(並且你不能指望客戶自己下載這樣的文件)。 – Heinzi 2009-11-06 16:54:11
是的,我喜歡那個補充。除了已經用組(和嵌套)成員資格探索過的路線外,我似乎無法從WMI中找到一種方法。仍然可能有一些COM組件允許vbscript快速檢查管理員狀態。 – 2009-11-06 20:00:24