我有这个代码(不仅仅是这个,但那是有问题的部分)
Dim objWMI : Set objWMI = GetObject("winmgmts:\\.\root")
Dim objSecuritySettings : Set objSecuritySettings = objWMI.Get("__SystemSecurity=@")
Dim objSD : objSecuritySettings.GetSecurityDescriptor(objSD)
为什么我没有收到objSD?
如果我运行脚本,当我尝试使用objSD.DACL
或类似的东西时会返回错误:
找不到对象!
那么我的错误是什么?
其他奇怪的是,如果我像这样运行它:
Dim objSD : objSecuritySettings.GetSecurityDescriptor objSD
适用于Win7 ....但不适用于服务器2003或2012.
编辑:
我在WinServer 2008上进行了测试,它运行得很好(就像在Win7上一样)....那么为什么不在03和12上呢?
答案 0 :(得分:0)
我无法在此处胜任(google for msdn "Scripting Security Descriptors - Microsoft"
,下载找到的第一个DOC
):
option explicit
Dim iSD, intRet
Dim objWMI : Set objWMI = GetObject("winmgmts:\\.\root")
Dim objSecuritySettings : Set objSecuritySettings = objWMI.Get("__SystemSecurity=@")
Dim objSD : objSecuritySettings.GetSecurityDescriptor(objSD)
Dim objSDa : intRet = objSecuritySettings.GetSecurityDescriptor(objSDa)
Dim objSDx : objSecuritySettings.GetSecurityDescriptor objSDx
Wscript.Echo "objSecuritySettings" _
, VarType(objSecuritySettings), TypeName(objSecuritySettings) _
, vbNewLine, "objSD ", VarType(objSD) , TypeName(objSD) _
, vbNewLine, "objSDa", VarType(objSDa), TypeName(objSDa), intRet _
, vbNewLine, "objSDx", VarType(objSDx), TypeName(objSDx)
<强>输出强>
==>cscript D:\VB_scripts\SO\31512037.vbs
objSecuritySettings 9 SWbemObjectEx
objSD 0 Empty
objSDa 9 SWbemObjectEx 0
objSDx 9 SWbemObjectEx
==>