var searcher = new ManagementObjectSearcher("\\\\.\\ROOT\\CIMV2", "SELECT * FROM Win32_LogicalShareSecuritySetting WHERE Name = \"Share\"");
var queryResult = searcher.Get();
foreach (ManagementObject findedItem in queryResult)
{
var caption = findedItem["Caption"];
InvokeMethodOptions options = new InvokeMethodOptions();
ManagementBaseObject outParamsMthd = findedItem.InvokeMethod("GetSecurityDescriptor", null, options);
ManagementBaseObject descriptor = outParamsMthd["Descriptor"] as ManagementBaseObject;
ManagementObject newAce = new ManagementClass(new ManagementScope("\\\\.\\ROOT\\CIMV2"), new ManagementPath("Win32_ACE"), null);
ManagementObject trustee = new ManagementClass(new ManagementScope("\\\\.\\ROOT\\CIMV2"), new ManagementPath("Win32_Trustee"), null);
trustee.Properties["SIDString"].Value = "S-1-5-32-544"; //Administrators
newAce.Properties["Trustee"].Value = trustee;
newAce.Properties["AccessMask"].Value = 262144; //delete
// Allow access to resource.
newAce.Properties["AceType"].Value = 0;
// ACL will be inherited.
newAce.Properties["AceFlags"].Value = 16;
// Add ACE to DACL and set to descriptor.
ArrayList daclArray = new ArrayList() { newAce };
descriptor.Properties["DACL"].Value = daclArray.ToArray();
ManagementBaseObject inParams = findedItem.GetMethodParameters("SetSecurityDescriptor");
inParams["Descriptor"] = descriptor;
var res = findedItem.InvokeMethod("SetSecurityDescriptor", inParams, null);
Int32 ReturnValue = Convert.ToInt32(res.Properties["ReturnValue"].Value);
}
Комментариев нет:
Отправить комментарий