【问题标题】:Can't delete folders created by Windows services via my app uninstaller?无法通过我的应用卸载程序删除由 Windows 服务创建的文件夹?
【发布时间】:2011-02-11 22:50:18
【问题描述】:

我的 MSI 安装程序向 SCM 注册了几个 Window NT 服务。这些服务将数据写入一个临时文件夹,默认情况下该文件夹获得 SYSTEM 帐户的所有权。在卸载期间,卸载程序进程无法删除文件夹,因为临时文件夹由具有读/写访问权限的管理员拥有。当前用户是管理员,但对这些文件夹没有明确的读/写权限。更糟糕的是,该应用程序是由 Window 服务控制的 Java 应用程序。

卸载程序的最佳策略是什么?应该是 - 使用本机代码更改文件夹的权限? - 启用 UAC 后如何工作?

【问题讨论】:

  • 是否包含一个清单,当安装程序运行一个好的策略时请求管理员权限提升?
  • 您应该尝试使用 LongPathTool 删除它们。它易于使用的程序及其用于删除“无法删除”的文件、文件夹等;)

标签: windows installation windows-installer


【解决方案1】:

我最终请求提升管理员权限以删除文件夹。将文件夹留在周围会导致升级,所以不,我不能按照海报的建议留下它们。

【讨论】:

    【解决方案2】:

    我认为您正在尝试解决安装程序的错误问题。想得更广一点——安装程序是否负责它安装的软件创建的数据?答案是不。当您卸载 Microsoft Office 时,它​​是否会删除您创建的所有 *.doc 文件,或者它自己在 TEMP 中的内部日志?我不这么认为。

    临时文件夹可以很好地保存此类临时数据,通常可以将其保留在那里。如果它不是敏感数据,您可以随时将其删除。许多关于如何清理操作系统的指南通常建议清理 TEMP 文件夹。

    因此,我建议不要使用权限发明复杂的方法和变通方法,而是保持原样。

    【讨论】:

      【解决方案3】:

      如果您有每台机器的安装程序,则卸载过程应使用具有完全权限的 TrustedInstaller 帐户。尝试创建卸载日志以确定未删除文件夹的原因。

      如果确实是权限问题,解决方案是配置您的服务,以便它为其创建的文件夹设置适当的权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-12
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        相关资源
        最近更新 更多