C # Хранение разрешений для папок - PullRequest
0 голосов
/ 28 ноября 2010

У меня небольшие проблемы с хранением разрешений для папок. Я смог найти некоторую документацию по их написанию и чтению. То, что я пытаюсь сделать, это прочитать разрешения для папки для определенного пользователя> Сохранить ее> изменить разрешения> после завершения программы установки, изменить разрешения обратно.

У меня все это отключено (только из-за кода от многих других), ЗА ИСКЛЮЧЕНИЕМ того, как сохранить исходные права доступа к папке и установить обратно. Я с удовольствием прочитаю любой предложенный вами материал, мы получили несколько фатальных ошибок с программным обеспечением, и это один из шагов для их устранения. Вся помощь приветствуется и ценится.

Ниже приведен пример того, как я устанавливаю разрешения. Да, я знаю, что у меня есть все, но это только для тестирования прямо сейчас

 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 Ответ

0 голосов
/ 28 ноября 2010

Если вы возвращаете dSecurity DirectorySecurity из AddDirectorySecurity, тогда вы можете просто позвонить Directory.SetAccessControl(directoryName, dSecurity);, как только вы закончите с измененными правилами доступа.SetAccessControl не работает, следующим шагом может быть явное удаление разрешений, предоставленных вами с помощью FileSystemSecurity.RemoveAccessRule .

Просто сохраните ссылку на FileSystemAccessRule, который вы создаете:

FileSystemAccessRule toRemoveWhenDone = new FileSystemAccessRule(Account, Rights, ControlType);
...