可能将此(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