リモート コンピューター IMPC-1111 の C:\ のルートに共有があり、ユーザー /w アクセス マスクを追加しようとしています。
FullControl = 2032127
Change = 1245631
[ReadOnly] = 1179817
私はそれらを読む方法を理解しました....しかし、それらを書く/変更する方法を理解できません。これは私がそれらを読むために使用するコードです。
Private Function GetSharedFolderAccessRule() As DataTable
Dim DT As DataTable = New DataTable()
Try
DT.Columns.Add("ShareName")
DT.Columns.Add("Caption")
DT.Columns.Add("Path")
DT.Columns.Add("Domain")
DT.Columns.Add("User")
DT.Columns.Add("AccessMask")
DT.Columns.Add("AceType")
Dim Con As ConnectionOptions = New ConnectionOptions
Con.Username = "Username"
Con.Password = "Password"
'Dim Scope As ManagementScope = New ManagementScope("\\.\root\cimv2", Con)
Dim Scope As ManagementScope = New ManagementScope("\\IMPC-1111\root\cimv2", Con)
Scope.Connect()
Dim Query As ObjectQuery = New ObjectQuery("SELECT * FROM Win32_LogicalShareSecuritySetting")
Dim Searcher As ManagementObjectSearcher = New ManagementObjectSearcher(Scope, Query)
Dim QueryCollection As ManagementObjectCollection = Searcher.[Get]()
For Each SharedFolder As ManagementObject In QueryCollection
If True Then
Dim ShareName As String = CType(SharedFolder("Name"), String)
Dim Caption As String = CType(SharedFolder("Caption"), String)
Dim LocalPath As String = String.Empty
Dim Win32Share As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT Path FROM Win32_share WHERE Name = '" & ShareName & "'")
For Each ShareData As ManagementObject In Win32Share.[Get]()
LocalPath = CType(ShareData("Path"), String)
Next
Dim Method As ManagementBaseObject = SharedFolder.InvokeMethod("GetSecurityDescriptor", Nothing, New InvokeMethodOptions())
Dim Descriptor As ManagementBaseObject = CType(Method("Descriptor"), ManagementBaseObject)
Dim DACL As ManagementBaseObject() = CType(Descriptor("DACL"), ManagementBaseObject())
For Each ACE As ManagementBaseObject In DACL
Dim Trustee As ManagementBaseObject = CType(ACE("Trustee"), ManagementBaseObject)
Dim Row As DataRow = DT.NewRow()
Row("ShareName") = ShareName
Row("Caption") = Caption
Row("Path") = LocalPath
Row("Domain") = CType(Trustee("Domain"), String)
Row("User") = CType(Trustee("Name"), String)
Row("AccessMask") = CType(ACE("AccessMask"), UInt32)
Row("AceType") = CType(ACE("AceType"), UInt32)
DT.Rows.Add(Row)
DT.AcceptChanges()
Next
End If
Next
Catch ex As Exception
MessageBox.Show(ex.StackTrace, ex.Message)
End Try
Return DT
End Function
誰かが私を正しい方向に向けることができますか? これは WMI を使用して書き込むことさえ可能ですか?
ありがとう!