2012-05-18 218 views
8

我知道这里已经有很多东西了,并且已经尝试了一些东西,但没有修好它的运气。访问路径****被拒绝

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

访问路径 'C:\用户\灰\文档\ ConfigOutput' 被拒绝

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

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

我使用Windows 7

运行生成的可执行文件也似乎没有工作。

道歉的家伙,似乎我是愚蠢的。我确实没有向输出路径添加文件名。我不会删除任何人通过这个陷阱完成的问题!感谢所有的帮助/评论。

+0

您是否尝试过将其保存到C或其他的根夹?这可能是UAC和用户文件夹的权限问题 - 这是在Win7或Vista上? – Charleh

+0

尝试以管理员身份运行应用程序,而不是使用visual studio。 –

+1

你指定了什么文件名? – Richard

回答

9

有几个可能性:

  • ConfigOutput是一个文件夹
  • ConfigOutput是一个文件,是在使用中(打开)
  • 您尚未登录,因为用户'Ash'

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

+5

配置输出是一个文件夹..... ooops! – user589195

+1

在我的情况下,该文件是只读的。 – toddmo

1

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

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

要强制应用程序开始以管理员身份来看看这个线程: How do I force my .NET application to run as administrator?

附:检查您的文件是否已被另一个FileStream或其他文件打开

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()); 
    } 
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

它看起来像你不指定一个文件名,因此无法创建使用相同的名称与现有目录文件 - 所以试着改变你的路径:

C:\用户\灰\文档\ ConfigOutput \ Out.xml