以编程方式向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)
要设置权限,主要需要高级用户权限(假设您运行的是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