C# Хранение разрешений для папок
У меня небольшие проблемы с хранением разрешений для папок. Я смог найти некоторую документацию по их написанию и чтению. То, что я пытаюсь сделать, это прочитать разрешения для папки для определенного пользователя> Сохранить ее> изменить разрешения> после завершения программы установки, изменить разрешения обратно.
У меня все это вниз (только из-за кода от многих других), кроме как сохранить исходные права доступа к папке и установить его обратно. Я с удовольствием прочитаю любой материал, который вы предложите, мы получим несколько фатальных ошибок с программным обеспечением, и это один из шагов к решению многих из них. Вся помощь приветствуется и ценится.
Ниже приведен пример того, как я устанавливаю разрешения. Да, я знаю, что у меня есть все, но это только для тестирования прямо сейчас
public void setPermDir()
{
try
{
string DirectoryName = "C:\\Temp1\\";
Console.WriteLine("Adding access control entry for " + DirectoryName);
// Add the access control entry to the directory.
AddDirectorySecurity(DirectoryName, @"Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadLine();
}
// Adds an ACL entry on the specified directory for the specified account.
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
}
1 ответ
Если вы возвращаете dSecurity DirectorySecurity из AddDirectorySecurity, тогда вы можете просто вызвать Directory.SetAccessControl(directoryName, dSecurity);
как только вы закончили с измененными правилами доступа.
Обновить
Если просто SetAccessControl не работает, следующим шагом может быть явное удаление разрешений, предоставленных вами с помощью FileSystemSecurity.RemoveAccessRule.
Просто сохраните ссылку на FileSystemAccessRule, который вы создаете:
FileSystemAccessRule toRemoveWhenDone = new FileSystemAccessRule(Account, Rights, ControlType);