访问路径****被拒绝

时间:2012-05-18 09:59:52

标签: c#

我知道这已经有很多东西已经尝试了一些东西,但没有运气来修复它。

我有一个C#程序,它构建了一个XML文档,并试图将其保存到MyDocuments中的文件夹中。调用XMLDoc.Save函数时,我得到了以下异常。

  

拒绝访问路径'C:\ Users \ Ash \ Documents \ ConfigOutput'

我有视觉工作室以管理员身份运行。有关如何解决它的任何想法?

我已尝试保存到桌面和C:\文件夹中。

我使用的是Windows 7。

运行构建的可执行文件似乎也不起作用。

道歉,似乎我是傻瓜。我确实没有在输出路径中添加文件名。我不会删除任何其他人通过这个问题完成的问题!感谢所有的帮助/评论。

5 个答案:

答案 0 :(得分:11)

有几种可能性:

  • ConfigOutput是一个文件夹
  • ConfigOutput是一个正在使用(已打开)的文件
  • 您尚未以用户'Ash'身份登录

您通常不必以管理员身份运行以写入您自己的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"/>,然后逐步转移到highestAvailablerequireAdministrator

或者,请求权限,捕获异常并将其打印出来:

try {
        FileIOPermission fileIOPermission = new FileIOPermission(FileIOPermissionAccess.AllAccess, myDocFolderFile);
        fileIOPermission.Demand();
    } catch (SecurityException se) {
        Debug.WriteLine(se.ToString());
    }