私はVbScriptを使用してWin32_Serviceのセキュリティ記述子を取得しています。私は、次のコードを使用しています: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
しかし、私はメッセージが結果のコードを言ってもらう、私はそれを実行するたびに、むしろ the manualで定義されたエラーコードより-2147023582何か、です。
誰でもアイデアがありますか?私はWindows 7のプロフェッショナル64ビットを使用しています。
数値は-2147023582です。何らかの64ビット問題である可能性がありますか?それは符号付き整数として格納されている符号なし整数のようには見えませんか?
(PS:variablenamesは気にしないでください...私はmsdnの例を取り上げました)。
ありがとう。しかし、それはマニュアル(上掲)に従ってコード2または9を返すべきではありませんか? -2147023582の値は表に定義されていません。 – agnsaft
@invictus:どうやら、必ずしもそうではありません。これは一般的なWindowsシステムのエラーです。 – Helen
あなたは正しいです。 vbscriptを使用して管理者権限を要求し、UACを起動できるかどうか知っていますか? – agnsaft