【问题标题】:Access Denied in creating directory using C#使用 C# 创建目录时访问被拒绝
【发布时间】:2011-09-27 14:38:46
【问题描述】:
string windowsDirectory = Environment.GetEnvironmentVariable("ProgramFiles");
string mydirecoty = windowsDirectory + "\\" + "NetServices\\";

if (!Directory.Exists(mydirecoty))
  {
    Directory.CreateDirectory(mydirecoty); //Access to the path 'C:\Program Files (x86)\NetServices\' is denied.
  }

当我在没有管理员帐户的情况下运行我的 .net 应用程序时引发异常。如果我尝试在其他 C:\ 驱动器中创建目录,例如 D:\,它运行良好。

我想在Program Files/ Windows 文件夹中创建目录的解决方案是什么?

【问题讨论】:

  • 这是一个基于 Web 的应用程序、Windows 服务、可执行还是计划任务?
  • 请使用异常的详细信息编辑您的问题,在您的代码中,您至少应该对代码进行尝试/捕获。它在 Windows 7 上运行吗?您是否 100% 确定您是管理员并且 UAC 已禁用?通常,除非您正在安装应用程序,否则不应在该位置创建子文件夹,但通常由安装程序完成。
  • 您可以强制您的应用程序以管理员身份运行:stackoverflow.com/questions/2818179/…
  • @lovecomputerscience - 这不是字典,而是目录。
  • 我建议你完全避免在其中创建文件夹:)

标签: c# .net directory file-permissions


【解决方案1】:

C:\program files 文件夹在 Vista 和 Windows 7(以及 Windows Server 2008 / 2008 R2)中受到保护(设计) - 普通用户帐户无权在其中创建目录 -这是一个系统文件夹。

您需要以 admin 身份运行 - 然后您有权在受保护的系统文件夹中创建目录 - 或者您在其他位置而不是在受保护的系统文件夹中创建目录。第二个选项将是推荐和首选的选项。

【讨论】:

    【解决方案2】:

    如果您的应用程序旨在由用户运行,请写入用户的应用程序数据文件夹或临时文件夹。您的应用程序应该安装到 Program Files 目录,并且可能使用 Windows 目录中的一些文件,但它永远不必写入任一位置。 您可以轻松地从环境变量中获取用户的应用程序 daa 文件夹。

    【讨论】:

      【解决方案3】:

      如果您从 Web 应用程序运行它,请确保应用程序池用户具有该文件夹的 ntfs 权限。

      【讨论】:

        【解决方案4】:

        您需要提升用户权限,因为它是 windows vista/7 中的一项功能。 以管理员身份运行将解决问题。

        【讨论】:

          【解决方案5】:

          如果您使用高于 Windows XP 的操作系统,您将无法访问 C:\PrpgramFiles 因为读写而受到保护,除非 AVII 您的应用程序具有管理员权限。

          再见

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-11-11
            • 1970-01-01
            • 2014-01-31
            • 2012-08-13
            • 2012-09-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多