在进程创建的时候用了‘CREATE_SUSPEND’,再将进程放入job管理后,ResumeThread却总是不成功这是创建进程的部分。这是相关的job管理部分。黄色部分resumethread总是失败的。
这是什么原因呢?各位见谅,代码无法拷贝,只能截图。Cwindows进程

解决方案 »

  1.   

    ResumeThread(pi.hThread)
    不是
    ResumeThread(pi.hProcess)
      

  2.   

    现在出来一个新的问题,我这个是一个独立的应用,会被集成到软件当中去。我单独测试的时候(vs环境下)没问题,但集成到软件当中就会在“AssignProcessToJobObject”的时候失败。返回码为5.
    看过你回过别人的一个信息,但我这貌似那样解决不了。
    能给点建议吗?
      

  3.   

    嗯,谢谢
    不过现在出来一个新的问题,我这个是一个独立的应用,会被集成到软件当中去。我单独测试的时候(vs环境下)没问题,但集成到软件当中就会在“AssignProcessToJobObject”的时候失败。返回码为5.
    能给点建议吗? 
      

  4.   

    的确是权限的原因。VS调试正常是因为进程运行在调试权限下。
    MSDN上说加入作业的进程句柄必需要有PROCESS_SET_QUOTA及PROCESS_TERMINATE权限。hProcess 
    A handle to the process to associate with the job object. The process must not already be assigned to a job; if it is, the function fails with ERROR_ACCESS_DENIED. The handle must have the PROCESS_SET_QUOTA and PROCESS_TERMINATE access rights. For more information, see Process Security and Access Rights.或者你在CreateProcess的第6个参数加入CREATE_BREAKAWAY_FROM_JOB试下
    CREATE_BREAKAWAY_FROM_JOB|NORMAL_PRIORITY_CLASS |CREATE_SUSPENDED
      

  5.   

    这样的情况下我必须得resumeprocess两次
    这样的话会在资源管理器里发现启动两个进程,而且放到软件里,我这里通过进程调用的应用花将近1分钟才启动起来。