双击exe时系统调用CreateProcess用的参数是什么?该怎么解决
双击exe时系统调用CreateProcess用的参数是什么?
其实这代码是VB改过来的,本来也是在VB上运行的,等效改了过来,觉得到c++的区来跟应该跟合理一点。
运行之后P2PSeacher.exe确实运行了,但是和自己双击exe来运行的有不同,这是代码运行的:

这是手工双击exe启动的:

手工启动的不需要做任何事,软件就会开始连接,但是用代码启动的不会。到底在调用CreateProcess函数时还要穿什么参数进去才能让他开始连接。
我觉得应该从一般在收到什么消息之后开始尝试连接着手,是不是我还缺少什么代码,所以缺少这个消息以至于不再连接??
其实主要的是,双击exe启动程序的时候操作系统是传递了什么参数给CreateProcess函数的?应该用系统传的参数就能解决问题了
------解决方案--------------------
我随便找了个 exe 双击, explorer.exe 调用 CreateProcess 的参数如下:

你对比看看能有什么发现不,
最好还是直接调试你的 P2PSeacher.exe 程序
------解决方案--------------------
我不是用的 VC, 是 OllDbg
你用 VC 试一下也可以.
Attach 系统的 explorer.exe 进程, 对 CreateProcessA 和 CreateProcessW 下断点.
然后去双击执行一个 exe 文件就会断下来,
然后就可以看堆栈上的参数了.
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
//Not used, but needed
ECURITY_ATTRIBUTES sec1;
SECURITY_ATTRIBUTES sec2;
//Set the structure size
sec1.nLength = sizeof(sec1);
sec2.nLength = sizeof(sec2);
sinfo.cb = sizeof(sinfo);
//Set the flags
sinfo.dwFlags = STARTF_USESHOWWINDOW || STARTF_USESTDHANDLES;
//Set the window's startup position
sinfo.wShowWindow = start_size;
//Start the program
CreateProcess("C:\\Windows\\Local\\Temp\\aa\\P2PSeacher.exe", null, sec1, sec2, false, 0,
0, Path, sinfo, pinfo);//这里的Path前面声明了
其实这代码是VB改过来的,本来也是在VB上运行的,等效改了过来,觉得到c++的区来跟应该跟合理一点。
运行之后P2PSeacher.exe确实运行了,但是和自己双击exe来运行的有不同,这是代码运行的:
这是手工双击exe启动的:
手工启动的不需要做任何事,软件就会开始连接,但是用代码启动的不会。到底在调用CreateProcess函数时还要穿什么参数进去才能让他开始连接。
我觉得应该从一般在收到什么消息之后开始尝试连接着手,是不是我还缺少什么代码,所以缺少这个消息以至于不再连接??
其实主要的是,双击exe启动程序的时候操作系统是传递了什么参数给CreateProcess函数的?应该用系统传的参数就能解决问题了
------解决方案--------------------
我随便找了个 exe 双击, explorer.exe 调用 CreateProcess 的参数如下:
你对比看看能有什么发现不,
最好还是直接调试你的 P2PSeacher.exe 程序
------解决方案--------------------
我不是用的 VC, 是 OllDbg
你用 VC 试一下也可以.
Attach 系统的 explorer.exe 进程, 对 CreateProcessA 和 CreateProcessW 下断点.
然后去双击执行一个 exe 文件就会断下来,
然后就可以看堆栈上的参数了.