场景:程序A使用CreateProcess函数去启动另一个程序(.exe)文件,在绝大部分情况下是可以成功启动的,但是在某些电脑上无效。

因为这“某些电脑”实在不好找,终于有一天借到一台这样的电脑。

经过多次实验发现,CreateProcess返回值总为-1,也就是成功创建了进程,而且我是用showPrompt,弹窗打印的该值,如果弹窗,就能创建进程。

最后猜想可能是因为CreateProcess之后,随即程序退出了,并不会等程序B创建完成,会不会太快了,导致电脑没反应过来。最后加了一个Sleep(5000); Delphi,程序B就能启动了。

查看了一下msdn,第一句话是这样的:The new process runs in the security context of the calling process.不知道是否与此有关。

如有知晓者,请解答,谢谢。

05-08 08:00