У меня есть какой-то код, который мне пришлось реорганизовать, который стал чрезвычайно медленным после рефакторинга.
Это то, что я сейчас использую:
DirectoryInfo dInfo = new DirectoryInfo(vPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(GroupName,
FileSystemRights.Read | FileSystemRights.Traverse,
InheritanceFlags.None,
PropagationFlags.None,
AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
И это предыдущий код,который работал намного быстрее:
// Add a new access control entry (ACE) object (objAce) so that
// the NDSuser has Full Control permissions on NTFS file system files.
objAce1 = new AccessControlEntryClass();
objAce1.Trustee = (objSIdHex).ToString();
objAce1.AccessMask = Maske; //(int)1180159;
objAce1.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;
objAce1.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE
| (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ONLY_ACE
| 1;
objDAcl.AddAce(objAce1);
Я понятия не имею, почему это занимает так много времени, тем более что я пытаюсь установить права только для этой папки (без наследования / без распространения) - но для больших структур папокэто занимает минуты!