8

我知道这已经有很多东西了,并且已经尝试了一些东西,但没有解决它的运气。

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

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

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

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

我正在使用 Windows 7。

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

对不起,伙计们,我似乎很愚蠢。我确实没有在输出路径中添加文件名。我不会删除这个问题,以防其他人被这个问题搞定!感谢所有帮助/评论。

4

5 回答 5

12

有几种可能:

  • ConfigOutput 是一个文件夹
  • ConfigOutput 是一个正在使用的文件(打开)
  • 您没有以用户“Ash”身份登录

您通常不必以管理员身份运行来写入您自己的 Documents 文件夹。

于 2012-05-18T10:37:21.610 回答
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
}
于 2012-05-18T10:42:46.397 回答
4

看起来您没有指定文件名,因此无法创建与现有目录同名的文件 - 因此请尝试将路径更改为:

C:\Users\Ash\Documents\ConfigOutput\Out.xml

于 2012-05-18T10:53:02.153 回答
1

尝试以管理员身份运行您的应用程序。

如果您想调试您的应用程序,也请以管理员身份启动您的 Visual Studio。

要强制应用程序以管理员身份启动,请查看此线程: 如何强制我的 .NET 应用程序以管理员身份运行?

PS 检查您的文件是否尚未被另一个 FileStream 等打开。

于 2012-05-18T10:22:28.090 回答
1

我不知道这是否会有所不同,但您可能希望以相对方式而不是绝对方式指定文件夹:Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)将为您提供当前用户文档的路径。检查它是否与您提供的不同。

如果是这样,您可能需要在其他用户或管理员下运行该应用程序,正如其他人所指出的那样。显然,不允许一个用户将文件保存到另一个用户的文档文件夹中。

对我来说,当我从 Visual Studio 调试我的应用程序时,文档文件夹与我当前登录并在其下运行 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());
    }
于 2012-05-18T10:34:30.720 回答