2011-08-10 72 views
0

在我的WPF MVVM應用程序中,我有一個要修改的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類型, 字符串名稱,手柄的SafeHandle,SecurityInfos securityInformation, 的SecurityIdentifier所有者,的SecurityIdentifier基,GenericAcl SACL, GenericAcl DACL)在 System.Security.AccessControl.NativeObjectSecurity.Persist在 System.Security.AccessControl.NativeObjectSecurity.Persist(字符串 名,手柄的SafeHandle,AccessControlSections的includeSections,對象 exceptionContext)(字符串 名,AccessControlSections的includeSections,對象exceptionContext)在System.Security.AccessControl.NativeObjectSecurity.Persist (字符串 name,AccessControlSections includeSections)at System.Security.AccessControl.FileSystemSecurity.Persist(字符串 FULLPATH)在System.IO.File.SetAccessControl(字符串路徑, FileSecurity fileSecurity)

回答

0

要設置權限,主要是它需要超級用戶權限(假設您正在運行Windows 7)。

要驗證上述內容,請以「以管理員身份運行」啓動Visual Studio並調試您的代碼。

什麼是確切的異常信息?

這裏正在例如:它爲用戶Everyone組

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你PLZ解釋的步驟... – S007

+0

是的,我使用的是Windows7的....我更新了詳細的異常消息的問題。 – S007

+0

我已經在上面添加了工作示例。 – Munawar

相關問題