【问题标题】:want thread to complete before process executes希望线程在进程执行之前完成
【发布时间】:2012-12-06 19:42:51
【问题描述】:

我正在以用户身份(CreateProcessAsUser()) 创建一个进程,以在用户屏幕上启动应用程序。在应用程序启动之前,我需要以某种方式在用户屏幕上运行一个函数。我的想法是CreateRemoteThread() 并将我的功能放在这里,但这会在CreateProcessAsUser() 已经启动应用程序之后发生。有人建议吗?谢谢

【问题讨论】:

  • 是的。我在 createprocessasuser 调用之前调用了函数,但该函数在隐藏的会话 0 中被调用。我认为通过使用线程我可以在用户会话中调用该函数。

标签: c++ multithreading winapi createprocessasuser


【解决方案1】:

创建一个执行您的函数然后执行目标应用程序的新应用程序(可以使用CreateProcess() 完成,因为新应用程序是通过CreateProcessAsUser() 启动的)。

【讨论】:

  • 有没有办法绕过创建另一个新应用程序。我可以执行以下操作:使用 CreateProcessAsUser 创建一个不启动应用程序的进程,然后为调用我的函数的进程分配一个线程,然后使用我的原始应用程序创建另一个进程(CreateProcessAsUser)??
  • @user1881918:“创建一个不启动应用程序的进程” - 一个进程就是一个应用程序,你的意思是接口吗?我会避免CreateRemoteThread - 如果您要启动的应用程序是 64 位的,而您的应用程序是 32 位的怎么办?你不能注入线程。您应该在调用应用程序上使用CreateProcessAsUser(即使用GetModuleFileName),并使用命令行参数告诉它执行您的“功能”,这样您只需要一个应用程序,但它会做两件事。
  • 是的,我的意思是界面,但这会运行一些没有任何用处的 exe。谢谢你把事情弄清楚了
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多