请问CreateProcessAsUser 为什么 产生的子进程可能会导致父进程崩溃?

hunterfo 2018-11-25 07:47:02
这个问题很困扰,请教各位
进程A 执行 CreateProcessAsUser 调用参数 BOOL bInheritHandles 为 true ,选择了 继承 父进程句柄,来执行某个第三方程序B,都能正常执行,

但是跟踪发现 某些情况 由于 这个B 一执行就崩溃,导致A进程在 CreateProcessAsUser 时也会崩溃,没有返回继续执行就崩溃了。


可是 为什么 第三方程序的 崩溃 会 导致 父进程也崩溃呢? B程序有问题,CreateProcessAsUse 应该返回失败 而不是 直接崩溃才对 ?

2,调用GetProcessHandleCount 发现一个 MFC 控制台程序 什么也没做 竟然 打开句柄数 就100多个了,怎么会如此多的 打开句柄?
...全文
601 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2018-12-08
  • 打赏
  • 举报
回复
你能定位崩溃的关键代码位置吗,打个log出来先定位一下?
hunterfo 2018-12-07
  • 打赏
  • 举报
回复
引用 5 楼 Eleven 的回复:
你代码是怎么写的?如何调用的CreateProcessAsUser 函数?

就是 后台服务,通过获取 复制 EXPLORER.EXE 的 token,然后用这个token 来 CreateProcessAsUser (调用参数 bInherit 为FALSE),一般程序都很正常,父子进程 通过 命名管道方式 通讯,但是发现 调用的程序 执行中时也有可能 会导致 父进程的崩溃,原因肯定是 被调用程序问题,但是 这个崩溃 却很让人莫名奇妙,父子进程 的关联 也就是 一个 管道而已。
hunterfo 2018-12-07
  • 打赏
  • 举报
回复
估计是 由于 被调用程序 的 DLL 混乱 造成的,但是 这个API 调用崩溃 确实很无解,zgl7903 SEH 结构化异常 的方法 有效,能捕捉到 崩溃。
Eleven 2018-11-28
  • 打赏
  • 举报
回复
你代码是怎么写的?如何调用的CreateProcessAsUser 函数?
zgl7903 2018-11-27
  • 打赏
  • 举报
回复
为什么说 CreateProcessAsUser 不会奔溃? 微软没有保障所有API都是安全的
可以试试 捕捉 SEH 结构化异常

Yofoo 2018-11-27
  • 打赏
  • 举报
回复
进程在 CreateProcessAsUser 时也会崩溃
这个情况有可以发生, 我有遇到当目标程序配置的manifest错误导致错误, 这个应该属于windows的bug


发现一个 MFC 控制台程序 什么也没做 竟然 打开句柄数 就100多个了
如果创建进程使用句柄继承, 那么所有的父进程句柄都会复制过来, 所以会比较多
hunterfo 2018-11-27
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
写日志 调试


你显然误解了我的问题,我想问的是 调用 CreateProcessAsUser 这个API 为什么会崩溃? 很多时候 你调用的 是 第三方程序,你并不能控制它的问题,但是这个第三方程序运行就崩溃,并不应该导致 调用方 执行 CreateProcessAsUser 这个API 崩溃
zgl7903 2018-11-26
  • 打赏
  • 举报
回复
写日志 调试



15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧