2016-01-26 6 views
0

Я использовал этот код, чтобы предоставить мое приложение полный доступ на чтение/о пути написать:C#: не может выполнить SetAccessControl

private void GetAccess(string fullPath) 
{ 
    DirectoryInfo dInfo = new DirectoryInfo(fullPath); 
    DirectorySecurity dSecurity = dInfo.GetAccessControl(); 
    dSecurity.AddAccessRule(new FileSystemAccessRule(new 
      SecurityIdentifier(WellKnownSidType.WorldSid, null), 
      FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | 
      InheritanceFlags.ContainerInherit, 
      PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); 
    dInfo.SetAccessControl(dSecurity);   
} 

Но когда дело доходит до dInfo.SetAccessControl(dSecurity) он бросает UnauthorizedAccessException хотя у меня есть полные права администратора на компьютере, который я использую.

Есть ли способ предоставить этот доступ другим способом или предоставить моему приложению какой-либо доступ для обработки этой команды?

+1

Ваш пользователь может иметь права, но делает активный процесс? – christophano

+0

@christophano no, у моего приложения нет, это то, что я хочу изменить, потому что этот инструмент будет генерировать журнал ошибок и записывать в него, но без прав на запись для папки, содержащей файл журнала, я не могу ее получить работа – fl0s3n

+0

Ну, есть проблема - вы не можете изменять разрешения, потому что приложение не имеет необходимых полномочий. – christophano

ответ

0

В Windows World привилегия администратора не означает, что все файлы/папки будут открыты для пользователей с правом администратора. Чтобы получить доступ к файлам, не принадлежащим вашей учетной записи, и у вас нет доступа, вам может потребоваться передать права собственности на файл/папку.

Пожалуйста, обратитесь к следующему вопросу/ответ

Getting/setting file owner in C#

+0

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