【问题标题】:Create Directory - Access denied创建目录 - 拒绝访问
【发布时间】:2013-11-11 21:32:38
【问题描述】:

当我尝试在 Program Files 中为我的程序创建一个新目录时,我收到一条错误消息,提示访问被拒绝。这是错误:Additional information: Access to the path 'C:\Program Files\PointOfSales' is denied. 这是为什么?我找不到任何 C# 特定的帮助来解决我的问题。这是我现在使用的代码。

if (!Directory.Exists("C:\\Program Files\\PointOfSales"))
        {
            Directory.CreateDirectory("C:\\Program Files\\PointOfSales");
        }

谢谢:)

【问题讨论】:

  • 我不知道这是不是个好主意。授予对该文件夹中“所有人”的完全访问权限。
  • 可以手动创建文件夹吗?尝试以管理员身份运行您的应用程序。
  • 看到这篇文章。你应该有你的答案:stackoverflow.com/questions/1191941/…

标签: c# .net winforms


【解决方案1】:

以当前用户身份运行的程序无权在 Program Files 位置创建目录。某些位置需要管理员权限(对于程序或用户)才能创建目录和其他文件 I/O 操作。

如果不允许该程序以管理员身份运行,请让安装程序为您创建目录。许多用户应用程序将不允许以管理员身份运行(作为公司安全策略的一部分),因此在这些情况下无法在受保护的位置创建目录。

如果您让安装程序执行此操作,您可以在 C++ 安装程序中为 UAC Execution Level 选项指定 requireAdministrator (/level='requireAdministrator')

对于 C# 程序,您可以在清单中添加以下内容,以确保它以管理员身份运行:

<security>
  <requestedPrivileges>
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  </requestedPrivileges>
</security> 

【讨论】:

  • 在构建商业应用程序时,是否存在这种情况?还是只需要管理员?
  • @Nathan 这就是 UAC 的行为方式。如果用户启用了 UAC,则默认情况下您的程序不会以管理员身份运行。
  • 好的,我想我现在明白了。谢谢!
【解决方案2】:

我认为应用程序需要以管理员身份运行。

尝试将其添加到清单中

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

【讨论】:

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