2013-09-11 7 views
2

У меня есть сетевое приложение C#, которое запрашивает администраторов для получения информации об аутентификации прокси-сервера. Я спрашиваю у пользователя, хотят ли они сохранить эту информацию, которая, если они выберет «да», я зашифрую в уникальном локальном файле для пользователя. Затем я хотел бы удалить все права доступа к файлам, кроме пользователя, который его создал, но все остальные пользователи имеют возможность удалить файл.Удалить все разрешения по умолчанию для файлов

Теперь я нашел статью MS ниже, но это не помогает, если я не знаю пользователей по умолчанию, которые были настроены в файле в первую очередь. Есть ли удаление всех прав доступа к файлу? Затем я могу добавить индивидуальные права, которые я хочу настроить для полного доступа текущего пользователя и удалить разрешения для «Все пользователи» или «Аутентифицированные пользователи», которые выглядят иначе, в зависимости от версии Windows. http://msdn.microsoft.com/en-us/library/system.io.file.setaccesscontrol.aspx

ответ

6

Я понял это ..

public void SetFileSecurity(String filePath, String domainName, String userName) 
    { 
     //get file info 
     FileInfo fi = new FileInfo(filePath); 

     //get security access 
     FileSecurity fs = fi.GetAccessControl(); 

     //remove any inherited access 
     fs.SetAccessRuleProtection(true, false); 

     //get any special user access 
     AuthorizationRuleCollection rules = fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); 

     //remove any special access 
     foreach (FileSystemAccessRule rule in rules) 
      fs.RemoveAccessRule(rule); 

     //add current user with full control. 
     fs.AddAccessRule(new FileSystemAccessRule(domainName + "\\" + userName, FileSystemRights.FullControl, AccessControlType.Allow)); 

     //add all other users delete only permissions. 
     fs.AddAccessRule(new FileSystemAccessRule("Authenticated Users", FileSystemRights.Delete, AccessControlType.Allow)); 

     //flush security access. 
     File.SetAccessControl(filePath, fs); 
    } 
0

Олицетворение может помочь вам решить эту проблему.

Термин «олицетворение» в контексте программирования относится к методу, который выполняет код под другим пользовательским контекстом, чем пользователь, который изначально запускал приложение, то есть контекст пользователя временно изменяется один или несколько раз во время выполнения заявление.

нажмите Here чтобы увидеть implimentation

+0

Я не не пытается выдать себя за кого-то другого. Мне нужно понять, как удалить все разрешения по умолчанию. – Switch

Смежные вопросы