2011-08-10 2 views
0

В моем приложении MVVM WPF у меня есть файл XML для изменения. Он успешно работает в Visual Studio. Но он показывает ошибку при запуске установленного приложения. Как я могу установить разрешения с помощью кода ..Программно добавление разрешений на запись в файлы в WPF

меня использовал этот код,

// current security settings. 
FileSecurity fSecurity = File.GetAccessControl(FilePath); 

// Add the FileSystemAccessRule to the security settings. 
string rr = WindowsIdentity.GetCurrent().Name; 
fSecurity.AddAccessRule(new FileSystemAccessRule(WindowsIdentity.GetCurrent().Name, 
      FileSystemRights.FullControl, AccessControlType.Allow)); 


// Set the new access settings. 
File.SetAccessControl(FilePath, fSecurity); 

Тем не менее не могу решить проблему ...,

Заранее спасибо ..

см исключение ...

System.UnauthorizedAccessException: Попытка выполнить команду Несанкционированная эксплуатация. в System.Security.AccessControl.Win32.SetSecurityInfo (типа ResourceType, имя String, SafeHandle ручкой, SecurityInfos безопасностьИнформационная, SecurityIdentifier владелец, группа SecurityIdentifier, GenericAcl SACL, GenericAcl DACL) в System.Security.AccessControl.NativeObjectSecurity.Persist (Строка имя, SafeHandle ручка, AccessControlSections includeSections, объект exceptionContext) при System.Security.AccessControl.NativeObjectSecurity.Persist (String имя, AccessControlSections includeSections, объект exceptionContext) на System.Security.AccessControl.NativeObjectSecurity.Persist (String имя, AccessControlSections включает разделы) по адресу System.Security.AccessControl.FileSystemSecurity.Persist (String FULLPATH) на System.IO.File.SetAccessControl (String путь, FileSecurity fileSecurity)

ответ

0

Чтобы установить разрешения в основном это требует прав пользователя питания (если ваш ARE запуск окон 7).

Чтобы проверить выше, запустите Visual Studio как «Запуск от имени администратора» и отлаживайте код.

Что такое сообщение об исключении?

Здесь работает пример: Он устанавливает полные права доступа для групп пользователей Всеобщие

private static void WriteAcl (string filename) 
     { 
      //Set security for EveryOne Group 
      SecurityIdentifier sid =new SecurityIdentifier(WellKnownSidType.WorldSid, null); 
      IdentityReference userIdentity =sid.Translate (typeof(NTAccount));   

      var AccessRule_AllowEveryOne = new FileSystemAccessRule (userIdentity, FileSystemRights.FullControl, AccessControlType.Allow); 
      var securityDescriptor = new FileSecurity(); 
      securityDescriptor.SetAccessRule (AccessRule_AllowEveryOne);    
      File.SetAccessControl (filename, securityDescriptor); 
     } 

Этот код работает только в том случае настройки учетной записи пользователя установлены не в коем случае не уведомлять. Выглядит ли он на вашем компьютере?

Обходной путь заключается в том, чтобы запустить приложение в качестве пользователя с полномочиями, используя манифест приложения.

http://msdn.microsoft.com/en-us/library/bb756929.aspx

+0

Тем не менее проблема exists.Could вы плз объяснить шаги ... – S007

+0

Да, я использую Windows7 .... Я обновил этот вопрос с точным сообщением исключения. – S007

+0

Я добавил рабочий пример выше. – Munawar

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