c# - 从 c# 卸载 msiexec 无法停止服务
问题描述
我有一个运行并接受远程命令的服务。我正在尝试发送远程命令进行卸载。这工作并执行 msiexec。msiexec 到达尝试停止服务的地步,然后挂起并最终失败,说没有停止服务的权限。
如果我从命令窗口运行相同的命令,它工作正常。
我已经尝试将此服务作为本地系统(使用管理员权限)以及管理员(我启用了管理员帐户)运行
我似乎无法弄清楚为什么我在停止运行 msiexec 的服务时遇到权限错误
补充资料
- 我们有一个单一的服务 - 它确实需要工作并定期休眠
- 该服务通常作为本地系统运行
- 我们使用自定义操作设置了安装程序 - 所有情况都可以正常工作 - 从命令行安装和卸载 - 但是在 C# 代码中启动的运行 msiexec 卸载程序有这个问题
- 当远程请求卸载时,希望删除磁盘上的服务、注册表项和文件
- 请求由正在运行的服务处理 - 它进入注册表,找到产品条目并检索卸载命令
- 执行卸载时,我使用 C# 进程并在 StartInfo 参数中包含程序名称、参数和动词(定义为运行方式) - 以及其他参数
- 卸载程序正常启动,执行一些操作,然后停止服务
- 停止服务直到超时,然后它在卸载日志中写入可能没有足够的权限来停止服务
解决方案
Quercus 的笔记触发了我的问题的解决方案。事实证明,更改为不作为服务的子项运行卸载允许卸载程序毫无问题地执行 msiexec。为此,我必须将 UseShellExecute 从 false 更改为 true。
推荐阅读
- javascript - 如何让 React 显示错误
- php - 在 docker 中运行 laravel queue worker
- regular-language - 如何为正则语言抽取引理
- ansible - Ansible 无法将版本与 is 版本进行比较
- python - 如何使用 python 在两列中扩展具有日期范围的数据框?
- python - 将 Google Calendar API 与 Python 3.7 Google Cloud 函数一起使用
- swift - 如何将 PDF 文件从 Google Drive 下载到我的 iOS 应用程序?
- python - 为什么 Excel 不能对 openpyxl 创建的样式进行“按颜色过滤”?
- mysql - LEFT JOIN 最新记录
- linux - 如何在 shell 脚本中运行时删除单引号