我知道这已经有很多东西已经尝试了一些东西,但没有运气来修复它。
我有一个C#程序,它构建了一个XML文档,并试图将其保存到MyDocuments中的文件夹中。调用XMLDoc.Save
函数时,我得到了以下异常。
拒绝访问路径'C:\ Users \ Ash \ Documents \ ConfigOutput'
我有视觉工作室以管理员身份运行。有关如何解决它的任何想法?
我已尝试保存到桌面和C:\文件夹中。
我使用的是Windows 7。
运行构建的可执行文件似乎也不起作用。
道歉,似乎我是傻瓜。我确实没有在输出路径中添加文件名。我不会删除任何其他人通过这个问题完成的问题!感谢所有的帮助/评论。答案 0 :(得分:11)
有几种可能性:
您通常不必以管理员身份运行以写入您自己的Documents文件夹。
答案 1 :(得分:4)
您需要检查并获得该目录/文件的权限
使用Security namesapce
var permissionSet = new PermissionSet(PermissionState.None);
var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, pathToFolder);
permissionSet.AddPermission(writePermission);
if (permissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet))
{
// do your stuff
}
else
{
// alternative stuff
}
答案 2 :(得分:2)
看起来您没有指定文件名,因此无法创建与现有目录同名的文件 - 因此请尝试将路径更改为:
C:\用户\灰\文件\ ConfigOutput \ Out.xml
答案 3 :(得分:1)
尝试以管理员身份运行您的应用。
如果要调试应用程序,请以管理员身份启动Visual Studio。
要以管理员身份强制启动应用,请查看此主题: How do I force my .NET application to run as administrator?
P.S。检查您的文件是否尚未被其他FileStream等打开。
答案 4 :(得分:1)
我不知道这是否有所不同,但您可能希望以相对而非绝对的方式指定文件夹:Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
将为您提供当前用户文档的路径。检查它是否与您提供的不同。
如果是这样,您可能需要在其他人指出的其他用户或管理员下运行该应用。显然,不允许一个用户将文件保存到另一个用户的文档文件夹中。
对我来说,当我从Visual Studio调试我的应用程序时,documents文件夹与我当前登录并在其下运行Visual Studio的用户相同。
您可以先尝试<requestedExecutionLevel
level="asInvoker"
uiAccess="true|false"/>
,然后逐步转移到highestAvailable
和requireAdministrator
。
或者,请求权限,捕获异常并将其打印出来:
try {
FileIOPermission fileIOPermission = new FileIOPermission(FileIOPermissionAccess.AllAccess, myDocFolderFile);
fileIOPermission.Demand();
} catch (SecurityException se) {
Debug.WriteLine(se.ToString());
}