C# 无法删除“Program files\my app”文件夹中的文件:System.UnauthorizedAccessException:对路径“”的访问被拒绝

C# 无法删除“Program files\my app”文件夹中的文件:System.UnauthorizedAccessException:对路径“”的访问被拒绝,c#,windows-services,windows-installer,C#,Windows Services,Windows Installer,我正在尝试创建一个更新程序,它将替换文件夹中的文件,而不需要安装程序。作为这个过程的一部分,我需要能够删除旧文件并用新文件替换它们。我试过了,得到了一个未经授权的感觉。我以管理员身份运行更新程序。我尝试了以下方法 A.将“文件和文件夹”属性设置为“正常” [ b、 获取文件夹及其包含的文件的所有权 [ c、 更改权限并授予所有用户对文件夹和文件的完全控制权[在安装程序中使用自定义操作] [ d、 从windows服务运行更新程序 结果没有差别。我一直收到拒绝访问错误。我该怎么做才能让更新程序删除

我正在尝试创建一个更新程序,它将替换文件夹中的文件,而不需要安装程序。作为这个过程的一部分,我需要能够删除旧文件并用新文件替换它们。我试过了,得到了一个未经授权的感觉。我以管理员身份运行更新程序。我尝试了以下方法 A.将“文件和文件夹”属性设置为“正常” [ b、 获取文件夹及其包含的文件的所有权 [ c、 更改权限并授予所有用户对文件夹和文件的完全控制权[在安装程序中使用自定义操作] [ d、 从windows服务运行更新程序


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

不清楚以管理员身份运行到底是什么意思,但以管理员身份登录并运行程序并不意味着程序以提升的权限运行,这就是为什么它确实需要。但是很明显,更新程序没有运行

因此,问题可能是您的这个更新程序需要一个提升清单,这样当您运行它时,它会在UAC提示下请求提升


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

请尝试授予路径访问权限对于所有使用FullControl的人,您可以尝试以下内容:谢谢@gulshanarora和Nhan Phan。它成功了。没有被删除的文件是应用程序银行正在使用的文件!请您投票支持我的答案,以便对其他人有所帮助。仅供记录:替换正在使用的文件并执行升级操作,例如替换文件和文件er%ProgramFiles%是MSI软件包Windows Installer和其他软件包类型支持的关键功能。高级功能,如处理正在使用的文件和任何所需的重新启动。还有许多其他问题:磁盘空间检查、事务和回滚等。从长远来看,使用此功能将对您有所帮助。Ju根据我的经验,这取决于你的产品有多大。谢谢Phil DW对patch.msp文件的建议。我也将探讨这个选项