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