【问题标题】:How to write to Program Files (x86) in C#?如何在 C# 中写入 Program Files (x86)?
【发布时间】:2016-09-08 05:07:11
【问题描述】:

我正在开发的应用程序的一个要求是能够为外部程序安装插件。安装插件包括将 dll 放入插件目录。问题是插件目录位于 Program Files (x86) 的文件夹中。尝试通过 File.WriteAllBytes 对其进行写入时,我遇到了 UnauthorizedAccessException。

  • 即使程序以管理员身份运行也会出现此错误。
  • 我已尝试将清单修改为 requireAdministrator 级别。
  • 我还尝试使用 runas 生成一个新进程。

如何将我的 dll 放入 Program Files (x86) 内的文件夹中?

【问题讨论】:

  • 可能是 UAC 问题。
  • 即使在接受 UAC 提示后,FileWriteBytes 仍会继续抛出 UnauthorizedAccessException。

标签: c#


【解决方案1】:

尝试添加

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]

上面涉及到 IO 活动的方法。 F/E,下面将“myFile”复制到程序文件目录:

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public void copyFile(string myFile){
    System.IO.File.Copy(myFile,Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
}

【讨论】:

    【解决方案2】:

    我认为您用于登录 Windows 并开始编程的登录帐户不是真正的管理员帐户。

    尝试检查您的帐户权限并以管理员模式运行 Visual Studio,然后 看看能不能在调试模式下写。

    检查并给出结果。

    【讨论】:

      【解决方案3】:

      我很傻。我在我正在写入的 Program Files 中指定了目录,但没有在路径中包含文件名。 UnauthorizedAccessException 让我失望了。

      【讨论】:

        猜你喜欢
        • 2017-02-01
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 2014-01-29
        • 2010-11-05
        • 1970-01-01
        • 2010-10-01
        相关资源
        最近更新 更多