我的MSI安装程序向SCM注册了几个Window NT服务。 这些服务将数据写入临时文件夹,默认情况下获取SYSTEM帐户的所有权。 在卸载过程中,卸载程序进程无法删除文件夹,因为临时文件夹由pipe理员拥有读/写访问权限。 当前用户是pipe理员,但对这些文件夹没有明确的读/写权限。 更糟糕的是,该应用程序是由Window服务控制的Java应用程序。
卸载程序的最佳策略是什么? 应该 – 使用本机代码来更改文件夹的权限? – UAC如何工作?
我最终要求管理员权限提升删除文件夹。 离开文件夹周围的升级,所以不,我不能离开他们建议的海报。
我认为你正试图解决安装程序的错误问题。 想一想 – 安装程序是由安装的软件创建的数据负责的吗? 答案是不。 当您卸载Microsoft Office时,是否将所有创建的* .doc文件或其自身的内部日志放在TEMP中? 我不这么认为。
临时文件夹可以保存这种临时数据,通常可以放在那里。 如果它不是敏感数据,你可以随时删除它。 有关如何清理操作系统的许多指南通常建议清理TEMP文件夹。
所以,我不建议复杂的方式和权限的解决方法,我建议只是保持原样。
如果您有每台计算机安装程序,则卸载过程应使用具有完全权限的TrustedInstaller帐户。 尝试创建一个卸载日志,以确定为什么不删除文件夹。
如果确实是权限问题,则解决方案是配置服务,以便在其创建的文件夹上设置适当的权限。