以编程方式向WPF中的文件添加写权限

本文关键字:文件 添加 权限 编程 方式 WPF | 更新日期: 2023-09-27 18:05:08

在我的WPF MVVM应用程序中,我有一个XML文件要修改。它在Visual Studio中成功地工作了。但是在运行安装的应用程序时显示错误。如何通过代码设置权限…

我使用了这个代码,

// 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);

仍然不能解决问题…,

提前感谢…

查看异常…

系统。UnauthorizedAccessException:尝试执行未经授权的操作。在System.Security.AccessControl.Win32。SetSecurityInfo (ResourceType类型,字符串名称,SafeHandle句柄,securityinfo, securityInformation,SecurityIdentifier所有者,SecurityIdentifier组,GenericAcl sacl,GenericAcl (acl) atSystem.Security.AccessControl.NativeObjectSecurity.Persist(字符串AccessControlSections包括esections,对象exceptionContext)System.Security.AccessControl.NativeObjectSecurity.Persist(字符串AccessControlSections的名称,AccessControlSections的名称,AccessControlSections的名称在System.Security.AccessControl.NativeObjectSecurity.Persist(字符串AccessControlSections(包括)System.Security.AccessControl.FileSystemSecurity.Persist(字符串fullPath)在System.IO.File。SetAccessControl (String路径,FileSecurity FileSecurity)

以编程方式向WPF中的文件添加写权限

要设置权限,主要需要高级用户权限(假设您运行的是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