首页 > 解决方案 > 无法删除“Program Files\my app”文件夹中的文件:System.UnauthorizedAccessException:拒绝访问路径“”

问题描述

我正在尝试创建一个更新程序,它将替换文件夹中的文件,而无需安装程序。作为此过程的一部分,我需要能够删除旧文件并用新文件替换它们。我试了一下,得到了 UnAuthorizedException。我以管理员身份运行更新程序。我尝试了以下一个。将文件和文件夹属性设置为正常 [尝试删除某个目录时拒绝访问路径 b. 取得文件夹和其中包含的文件的所有权 [取得文件或文件夹的所有权 c. 更改权限并授予所有用户对文件夹和文件的完全控制权 [在安装程序中使用自定义操作] [如何在使用 .NET 安装期间授予对文件夹的读/写权限 d。从 Windows 服务运行更新程序

结果没有区别。我不断收到拒绝访问错误。我该怎么做才能让更新程序删除文件?

标签: c#windows-serviceswindows-installer

解决方案


目前尚不清楚“以管理员身份运行”的确切含义,但是以管理员身份登录并运行程序并不意味着该程序以提升的权限运行,这是它真正需要的。但显然更新程序没有运行提升。

所以问题可能是你的这个更新程序需要一个提升清单,这样当你运行它时,它会通过 UAC 提示请求提升。

话虽如此,不支持简单地替换使用 Windows 安装程序 MSI 安装的文件。这些文件必须替换为 Windows Installer 更新,例如补丁 .msp 文件或升级的 MSI 文件。Windows Installer 会跟踪安装的每个文件、其版本、是否已更新以及文件哈希。在不使用 Windows Installer 的情况下替换文件可能会导致对原始 MSI 文件的意外需求,以便 Windows 可以将文件恢复到其原始安装状态。您可能会发现转到程序和功能(或右键单击 MSI 文件)并选择修复也将恢复它们。


推荐阅读