微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

等待ShellExecuteEx设置Windows进程的访问权限

我在C ++程序中使用ShellExecuteEx函数来启动Uninstall.lnk文件。 在我的程序中,我想等待卸载程序完成。 我的第一个尝试是在SHELLEXECUTEINFO结构中设置SEE_MASK_NOCLOSEPROCESS标志,然后在传递给ShellExecuteEx的SHELLEXECUTEINFO结构中可用的hProcess句柄上调用WaitForSingleObject ,但这似乎仍然过早返回。

我目前的怀疑是,这是因为ShellExecuteEx启动的进程(是否启动一个新的shell?)创build新的subprocess,但不会等待它们。 所以我试图创build一个“等待我的subprocess并启动所有subprocess”的function。 为此,我尝试使用作业对象。

我使用CreateJobObject创build了一个作业对象,将ShellExecuteEx返回的进程句柄分配给作业,然后尝试等待作业对象。 不幸的是,分配进程的工作失败,我认为这是由于访问权限不足。

有谁知道如何设置进程句柄的PROCESS_SET_QUOTA和PROCESS_TERMINATE访问权限(根据MSDN, AssignProcesstoJobObject成功所需的AssignProcesstoJobObject ),还是等待ShellExecuteEx启动的进程完成的另一种方式?

我怎样才能得到Python的主窗口的句柄?

通过线程提高磁盘读取性能(多个文件

Win32 .:如何刮没有正则expression式的HTML?

midl错误MIDL2379

访问Windows 8/10卷OSD颜色

更新:我应该指出,我也启动其他应用程序,不只是Uninstall.lnk 。 其中之一是例如一个ClickOnce应用程序,它实际上是一个简单的XML文件,扩展名为.application 。

如何检查ODBC通信,查看正在传递的sql

如何使用Python更改Windows认语言环境?

发送电子邮件时使用Gmail SMTP的PHPMailer速度较慢

窗口8 64位RTM&PHPcurl启用

如何识别安装程序文件

Vista使用作业对象来启动链接。 因此,您尝试分配给另一个作业对象的过程可能已被分配。

看: 这个问题

为什么不执行目标文件而不是打开Uninstall.lnk ? 你可以使用IShellLink来获得快捷方式的目标。 然后你就可以使用SEE_MASK_NOCLOSEPROCESS标志通过ShellExecuteEx执行目标文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐