检查脚本是否具有提升的权限

Hei*_*nzi 5 vbscript elevation elevated-privileges

我想检查运行 VBscript 的上下文是否允许我执行管理任务。

要求:

  • 该解决方案应该适用于从 Server 2003 开始​​的所有 Windows 操作系统。(这排除了仅检查管理员组成员身份的解决方案——请记住,Vista 和 Windows 7 中有 UAC!)
  • 解决方案应该很简单。检查 Windows 组成员身份的 50 个 LOC 解决方案(当然,递归地,因为用户可能是一个组的成员,该组是一个组的成员......这是管理员组的成员),然后对 Vista 进行一些额外的检查UAC并不简单
  • 解决方案可能有点脏,所以按照这个解决方案的思路就可以了。
  • 它不应该太脏。在我看来,将文件写入 C:\Windows 或写入注册表项太脏了,因为它会修改系统。(编辑:无论如何,这可能不起作用:例如,在 HTA 中使用 VBScript 时,UAC 重定向开始。)

相关问题:https : //stackoverflow.com/questions/301860(我在那里找到的所有答案 (a) 忽略了 UAC 问题和 (b) 是错误的,因为它们忽略了用户具有管理权限的可能性,尽管不是直接的管理员组中的成员)

RLH*_*RLH 7

我知道这个帖子很旧并且标记为已回答,但这是一个更简单的方法,一直对我有用。用户 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
Run Code Online (Sandbox Code Playgroud)