我想检查(通过VBScript)脚本运行的上下文是否允许我执行管理任务。
的要求:
相关问题:https://stackoverflow.com/questions/301860(我在那里找到的所有答案(a)忽略了UAC问题,(b)有问题,因为他们忽略了用户具有管理权限的可能性,尽管他们不是直接成员管理员组)
答案 0 :(得分:2)
我知道这个帖子已经很老了并且标记了答案,但这是一个简单的方法,一直对我有用。用户S-1-5-19是本地NT权限,因此访问密钥需要管理员权限。如果通过高程运行,它可以工作。
Option Explicit
msgbox isAdmin(), vbOkonly, "Am I an admin?"
Private Function IsAdmin()
On Error Resume Next
CreateObject("WScript.Shell").RegRead("HKEY_USERS\S-1-5-19\Environment\TEMP")
if Err.number = 0 Then
IsAdmin = True
else
IsAdmin = False
end if
Err.Clear
On Error goto 0
End Function
答案 1 :(得分:1)
可能将此(WhoAmI from VBscript)与此(UAC Turned On)合并。
以下是代码,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
答案 2 :(得分:1)
上面的代码需要“whoami”来自CSI-Windows.com/toolkit/ifuserperms的IfUserPerms脚本。
在这里阅读你的帖子之后,我创建了新的脚本代码,用于检查VBS(9行)和CMD / BAT(3行)中的快速,小型,高效,被动(无变化)代码的管理权限。如果用户未提升,它也可以通过报告false来与UAC一起使用。
您可以在此处找到代码:http://csi-windows.com/toolkit/csi-isadmin
答案 3 :(得分:1)
我添加了两个额外的脚本工具包,可以显着增强上面来自ifuserperms.vbs的原始代码。
CSI_IsSession.vbs几乎可以告诉您有关UAC或脚本运行的当前会话的任何信息。
VBScriptUACKit.vbs(使用CSI_IsSession.vbs)允许您通过重新启动自己选择性地在脚本中提示UAC。已经过设计和调试,可以在许多执行场景下工作。
答案 4 :(得分:0)
以下是导致脚本文件或任何其他文件以管理员身份运行的最快方法:
首先创建您需要做的任何事情的VBS脚本。 在我的情况下,它是一个注册表编辑vbs,允许我自动管理登录 然后当机器重新启动时,运行另一个文件以确保 自动登录登录不再启用。
创建文件后,您需要创建cmd提示符快捷方式。 接下来“右键单击”快捷方式并更改提示,以便它以管理员身份运行。
像这样粘贴文件路径: D:\ WINDOWS \ system32 \ cmd.exe / c“D:\ Dump \ Scripts \ StartUp.vbs”
'C'表示它将在完成后关闭 如果您希望它保持打开状态,请使用“K”
希望这有助于其他人。