【问题标题】:Getting Win32_Service security descriptor using VBScript使用 VBScript 获取 Win32_Service 安全描述符
【发布时间】:2011-01-10 20:16:31
【问题描述】:

我正在使用 VbScript 检索 Win32_Service 的安全描述符。我正在使用以下代码:

 SE_DACL_PRESENT = &h4
 ACCESS_ALLOWED_ACE_TYPE = &h0
 ACCESS_DENIED_ACE_TYPE  = &h1

 strComputer = "."
 Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate, (Security)}!\\" & strComputer & "\root\cimv2")

 Set colInstalledPrinters =  objWMIService.ExecQuery _
  ("Select * from Win32_Service")

 For Each objPrinter in colInstalledPrinters
    Wscript.Echo "Name: " & objPrinter.Name 
 ' Get security descriptor for printer
  Return = objPrinter.GetSecurityDescriptor( objSD )
  If ( return <> 0 ) Then
  WScript.Echo "Could not get security descriptor: " & Return
  wscript.Quit Return
  End If
 ' Extract the security descriptor flags
  intControlFlags = objSD.ControlFlags
  If intControlFlags AND SE_DACL_PRESENT Then
 ' Get the ACE entries from security descriptor
   colACEs = objSD.DACL
  For Each objACE in colACEs
 ' Get all the trustees and determine which have access to printer
   WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
   If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
    WScript.Echo vbTab & "User has access to printer"
   ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
    WScript.Echo vbTab & "User does not have access to the printer"
   End If
  Next
  Else
  WScript.Echo "No DACL found in security descriptor"
 End If
 Next

但是,每次我运行它时,我都会收到消息说结果代码是 -2147023582 东西,而不是定义的错误代码 the manual.

有人有什么想法吗?我使用的是 Windows 7 专业版 64 位。

号码是-2147023582。会不会是某种 64 位问题?这看起来不像存储为有符号整数的无符号整数吗?

(PS:不要介意变量名...我从 msdn 中摘录了一个示例)。

【问题讨论】:

    标签: vbscript wmi


    【解决方案1】:

    错误代码 -2147023582 (0x80070522) 表示“客户端未持有所需的权限”。很可能,WMI 名字对象中的Security 权限是不够的,您需要以管理员身份运行脚本。 (至少,当我以管理员身份运行时,您的脚本在 64 位 Vista 上运行良好。)

    【讨论】:

    • 谢谢。但是根据手册(上面发布)不应该是返回代码 2 或 9 吗? -2147023582 值未在表中定义。
    • @invictus:显然,不一定。这是一般的 Windows 系统错误。
    • 你是对的。您知道是否可以强制执行 vbscript 来请求管理员权限并触发 UAC?
    • @invictus:看起来这是可能的。以下是一些包含更多信息的链接:Scripting Elevation on VistaVBScripts and UAC elevationVBScript UAC Prompting Kit
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    相关资源
    最近更新 更多