【问题标题】:Writing to a file I get unauthorized access error.How can I do it?写入文件我收到未经授权的访问错误。我该怎么做?
【发布时间】:2011-04-28 15:50:21
【问题描述】:

尽管网上有很多帖子,但我找不到我的问题的答案。 我正在编写一个将 csv 文件写入文件夹的应用程序。用户应该能够选择一个目录。 我正在使用 vs2010 在 Windows 7 中开发,在管理员模式下运行我的应用程序。无论如何,当我这样做时,我仍然会收到“未经授权的访问异常”

   var path=@"c:\" or c:\MyFolder
   StringBuilder sb=new StringBuilder();
   sb.AppendLine("Test");
   var myFile=sb.ToString();
   using (var writer=new StreamWriter(path))
     {
        writer.Write(myFile);
     }

我错过了什么吗? 我感觉window7只能写入指定文件夹,这是怎么回事?

有什么建议吗?

已编辑

我在“C:\MyFolder\”下创建了几个文件夹

我没有使用任何凭据,例如 Windows 模拟等。

如果它写入我的类库的 bin\debug\,它确实会写入。但不是任何指定的文件夹。

【问题讨论】:

  • 它可能是您正在使用的路径。即使在管理员模式下,某些目录仍然受到保护。将路径设为 C 盘根目录。看看这是否有效。
  • 你能给我们举一些'path'和'myfile'的例子吗?
  • 你的应用使用windows模拟吗?
  • 我已经编辑了我的问题来回答一些问题
  • 如果您尝试让应用程序将文件写入您的桌面,是否可行?

标签: c# windows-7 permissions


【解决方案1】:

您的代码 sn-p 是导致问题的真实代码吗?

从表面上看,您是在尝试将文本“Test”流式传输到文件系统上的目录,而不是尝试写入文件。 (path 刚刚分配给@"C:\")。我对您收到UnauthorizedAccessException 并不感到惊讶。

将要写入的文件的完整路径分配到path 变量中,我想你会成功的。

【讨论】:

  • @ChisDickson.the 是我真实代码中的两件事,我正在写入一个我也无权访问的文件夹,当我进行点头测试时,我忘记将路径与文件名结合起来。谢谢
【解决方案2】:

尝试使用“以管理员身份运行”运行您的应用。上面的 cmets 也可能会引导您朝着正确的方向前进。您绝对应该选择您的 Windows 用户有权编辑的目录。

【讨论】:

  • “以管理员身份运行”不需要写入非系统目录。如果是这种情况,每个写入自定义文件夹 (c:\my_temp_folder) 的应用程序都需要设置“以管理员身份运行”,但事实并非如此。
  • 我同意应用程序应该写入用户目录,除非要求规定文件必须进入他设置的路径。 OP 使用用户目录的问题会少得多(权限问题,因为您正在写入一个奇怪的路径而激怒了系统管理员等)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2016-09-11
  • 2013-12-08
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
相关资源
最近更新 更多