VBS获取文件的SDDL字符串

标签: , , , , ,

VBS调用WMI中Win32_SecurityDescriptorHelper类的Win32SDToSDDL方法将security descriptor转成SDDL字符串。

代码如下:

' Obtain argument from command line

If WScript.Arguments.Count = 0 Then
    WScript.Echo "Usage: GetFileSD <file_name>"
    WScript.Quit 1
End If

' Get the filename with path, for example C:\Users\user1\test.txt
Set objFileSystem = CreateObject( "Scripting.FileSystemObject" )
Filename = WScript.Arguments( 0 )
Set objFile = objFileSystem.GetFile( Filename )
Filename = objFile.Path
WScript.Echo Filename

' Get an instance of Win32_SecurityDescriptorHelper
Set objHelper = GetObject( _
    "winmgmts:root\cimv2:Win32_SecurityDescriptorHelper" )

' Connect to WMI on local computer and root\cimv2 namespace
Set objWMIService = GetObject( "winmgmts:root\cimv2" )

' Get the instance of Win32_LogicalFileSecuritySetting
'    associated with the file
' Replace single "\" with "\\" as escape character
Set objFile = objWMIService.Get( _
    & "Win32_LogicalFileSecuritySetting=""" _
    & Replace( Filename,"\","\\") & """" )

' Get the existing security descriptor for the file
Return = objFile.GetSecurityDescriptor( objSD )
If ( return <> 0 ) Then
    WScript.Echo "Could not get security descriptor: " & Return
    wscript.Quit Return
End If

' Convert file security descriptor from 
'     Win32_SecurityDescriptor format to SDDL format
Return = objHelper.Win32SDToSDDL( objSD,SDDLstring )
If ( Return <> 0 )  Then
    WScript.Echo "Could not convert to SDDL: " & Return
    WScript.Quit Return
End If

WScript.Echo SDDLstring

代码出处:http://msdn.microsoft.com/ZH-CN/library/windows/desktop/aa394056%28v=vs.85%29.aspx

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. VBS文件拖拽的个数限制(无法执行 – 参数列表过长)
  2. VBS中的GUI界面(EditPlus注册机)
  3. VBS创建系统服务
  4. 用Visual C++ 6.0(VC6)编译Notepad2
  5. 批处理技术内幕:随机数%RANDOM%

留下回复