【问题标题】:ShellExecute in suspend modeShellExecute 处于挂起模式
【发布时间】:2011-07-21 23:08:51
【问题描述】:

Createprocess API 可以选择使用 CREATE_SUSPENDED 标志创建进程。同样,ShellExecute API 中是否有可能创建处于挂起状态的进程。

【问题讨论】:

    标签: c windows winapi process


    【解决方案1】:

    没有。 ShellExecute 不必暗示进程已启动 - 它用于执行“shell 操作”,例如“打开”或“打印”,这可能会导致创建新进程。

    【讨论】:

    • 在 vista/2008 中,如果我执行 shellexecute,进程会通过 createprocess api 打开。但是,在 Windows 7 中,如果我执行 shellexecute 语句,它不会通过 createprocess 进行处理。我想知道它跨越整个过程的方式。你有什么想法埃里克。
    • 据我所知,所有产生 API 的进程最终都以NtCreateProcess 结尾。但是,如前所述,ShellExecute 并不总是必须创建一个进程。
    • 所有进程生成函数都不会通过NTcreateprocess。大多数 api 通过 createprocess api 传递。 Createprocess 不一定要通过 ntcreateprocess。我发现很多创建过程调用没有通过 ntcreateprocess 传递。同样,如您所说,Shellexecute 会多次创建进程。在 2008 年的环境中,这些进程创建通过 createprocess api 传递。但是在 Windows 7 中,它不依赖于 createprocess api。
    【解决方案2】:

    在 Windows 7 中生成进程时执行 Shell 不会调用 createprocess。但在 Windows 2008 中则相反。因此在 win7 中为 shellexecute 实现了 wine 代码,并通过 createprocess 为我的应用程序工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多