【问题标题】:msiexec uninstall from c# fails to stop service从 c# 卸载 msiexec 无法停止服务
【发布时间】:2021-03-08 15:49:04
【问题描述】:

我有一个运行并接受远程命令的服务。我正在尝试发送远程命令进行卸载。这工作并执行 msiexec。 msiexec 到达尝试停止服务的地步,然后挂起并最终失败,说没有停止服务的权限。

如果我从命令窗口运行相同的命令,它工作正常。

我已经尝试以本地系统(具有管理员权限)以及管理员(我启用了管理员帐户)身份运行该服务

我似乎无法弄清楚为什么在停止运行 msiexec 的服务时出现权限错误

添加信息

  • 我们只有一项服务 - 它确实需要工作并定期休眠
  • 服务通常作为本地系统运行
  • 我们使用自定义操作设置了安装程序 - 所有情况都可以正常工作 - 从命令行安装和卸载 - 但是在 C# 代码中启动的运行 msiexec 卸载程序会出现此问题
  • 发出远程卸载请求时,希望删除磁盘上的服务、注册表项和文件
  • 请求由正在运行的服务处理 - 它进入注册表,找到产品条目并检索卸载命令
  • 执行卸载时,我使用 C# 进程并在 StartInfo 参数中包含程序名称、参数和动词(定义为运行方式) - 以及其他参数
  • 卸载程序正常启动,执行一些操作,然后停止服务
  • 停止服务直到超时,然后它会在卸载日志中写入可能没有足够的权限来停止服务

【问题讨论】:

标签: c# windows-installer


【解决方案1】:

来自 Quercus 的笔记触发了我的问题的解决方案。事实证明,更改为不作为服务的子项运行卸载允许卸载程序毫无问题地执行 msiexec。为此,我必须将 UseShellExecute 从 false 更改为 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2018-10-28
    相关资源
    最近更新 更多