我从随机用户那里收到关于UnauthorizedAccessException
在随机文件夹中读取或写入(创建文件)时的随机报告。通常在自己的Documents文件夹中。更多的问题是,当应用无法将其数据写入{USER}\AppData\Roaming
时。
应用程序以admin **身份运行,通常报告来自Windows 7和Windows 8用户。
如果不手动设置权限,有没有办法解决此问题。
**确定应用是否以管理员身份运行
AppDomain myDomain = Thread.GetDomain();
myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
boolean isRunningasAdmin = myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
编辑:在app.manifest
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
答案 0 :(得分:1)
关于问题:尝试写入磁盘时是否可以避免与权限相关的异常?
简而言之,答案是:是的,这可以通过使用模仿来实现。
模拟是线程使用不同的线程执行的能力 安全信息比拥有该线程的进程。通常情况下, 服务器应用程序中的线程模拟客户端。这允许 服务器线程代表该客户端访问以访问对象 服务器或验证对客户端自己的对象的访问权限。 [来源:A Complete Impersonation Demo]
正如Aasmund Eldhuset所强调的那样,以管理员身份运行不保证您将拥有访问文件系统的相应权限。
作为一个完整性检查,您可以创建一个简单的应用程序,以确保一切都按预期工作。
我建议您尽量提供用户反馈,因为用户提供不准确或不完整的问题描述并不少见。
在您的方案中,我会让您的应用程序尝试在应用程序启动时写入相关目录/文件夹。如果写入失败,则可以将相关信息(例如,正在执行写入操作的用户的名称)记录到事件日志(例如文本文件)中以供以后查看。