从实际上是从 nuget 包中获取的程序文件读取 dll 时访问路径被拒绝

Access to path denied while reading a dll from Program Files which is actually got from a nuget package

程序文件 (x86) 中遇到拒绝访问路径错误, 使用从 nuget 包获取的 DLL 时:用于读取 ODF 文件的 AODL - https://www.nuget.org/packages/AODL/ 在我创建 MSI 文件 之后使用设置项目

在代码中,我不怀疑文件创建部分,因为我在用户选择的文件转换路径中创建了这个文件,但NOT IN PROGRAM FILES 文件夹路径:

File.WriteAllText(targetFileName, sb.ToString(), Encoding.UTF8);

这就是为什么我只是怀疑 DLL,请告诉我如何找到错误并修复它。

一堆目录 - 程序文件,系统驱动器的根目录,Windows - 受到 NTFS 权限的严格保护。编写它们通常是一个普通的 "no-go"。除非你 运行 拥有完全的管理权限 - 只有安装者和非常罕见的管理工具应该考虑 - 你将无法在那里写。

无论您在 阅读 时指出这种情况如何发生。读取被阻止是非常不寻常的。您需要检查对这些文件夹设置了哪些权限以及原因。也许安装程序不小心从您的计算机复制了权限,这只对您的用户和组有意义?也许 Windows 或第三方侵犯了这些权利?我能想到的适用于此的选项不多。

对于这个应用程序,即使是从 Program Files 文件夹中读取 DLL,我也需要管理员权限,因此我强制应用程序拥有这样的执行权限。

新创建的应用程序清单文件的以下行已更改并解决了问题。

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

修复在 How do I force my .NET application to run as administrator?

中有很好的解释

原因在

中说得很好