1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
private void setPermissionOnFolder()
{
string sharedFolderName = "hristest12";
string computerName = "CIS1100873";
//Full access = 2032127 ; Change = 1245631 ; Read = 1179817
List<ManagementObject> lst = new List<ManagementObject>();
lst.Add(getUserACE(computerName, "HRISSelRecrutRO1DEV", 1179817));
lst.Add(getUserACE(computerName, "HRISHelpSelRecrutDEV", 2032127));
ManagementObject userSecurityDescriptor = new ManagementClass(new ManagementPath("Win32_SecurityDescriptor"), null);
userSecurityDescriptor["ControlFlags"] = 4; //SE_DACL_PRESENT
userSecurityDescriptor["DACL"] = lst.ToArray();
//UPGRADE SECURITY PERMISSION
ManagementClass mc = new ManagementClass("Win32_Share");
ManagementObject share = new ManagementObject(mc.Path + ".Name='" + sharedFolderName + "'");
share.InvokeMethod("SetShareInfo", new object[] { Int32.MaxValue, "desc of " + sharedFolderName, userSecurityDescriptor });
}
private ManagementObject getUserACE(string computerName, string groupName, int rightMask)
{
NTAccount ntAccount = new NTAccount(groupName);
//SID
SecurityIdentifier userSID = (SecurityIdentifier)ntAccount.Translate(typeof(SecurityIdentifier));
byte[] utenteSIDArray = new byte[userSID.BinaryLength];
userSID.GetBinaryForm(utenteSIDArray, 0);
//Trustee
ManagementObject userTrustee = new ManagementClass(new ManagementPath("Win32_Trustee"), null);
userTrustee["Name"] = computerName + @"\" + groupName;
userTrustee["SID"] = utenteSIDArray;
//ACE
ManagementObject userACE = new ManagementClass(new ManagementPath("Win32_Ace"), null);
userACE["AccessMask"] = rightMask; //Full access = 2032127 ; Change = 1245631 ; Read = 1179817
userACE["AceFlags"] = AceFlags.ObjectInherit | AceFlags.ContainerInherit;
userACE["AceType"] = AceType.AccessAllowed;
userACE["Trustee"] = userTrustee;
return userACE;
} |
Partager