none
求助:调用CreateProcess函数时出错 RRS feed

  • 问题

  • 我创建了一个全新的MFC应用程序(基于对话框),然后写了这几行代码:

    DWORD LaunchProgram(wchar_t *lpszCmdLine)
    {
    	DWORD dwExitCode = 0;
    	BOOL bSuccess = TRUE;
    	STARTUPINFO si;
    	PROCESS_INFORMATION pi;
    
    	ZeroMemory(&si, sizeof(si));
    	si.cb = sizeof(si);
    	ZeroMemory(&pi, sizeof(pi));
    
    	bSuccess = CreateProcess(NULL, lpszCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
    	if (bSuccess)
    	{
    		WaitForSingleObject(pi.hProcess, INFINITE);
    		GetExitCodeProcess(pi.hProcess, &dwExitCode);
    		CloseHandle(pi.hProcess);
    		CloseHandle(pi.hThread);
    	}
    	return dwExitCode;
    }
    
    void CMFCApplication1Dlg::OnBnClickedButton1()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	//DWORD code=LaunchProgram(L"C:\\Users\\Administrator\\source\\repos\\ConsoleApplication1\\Debug\\ConsoleApplication1.exe");
    	DWORD code = LaunchProgram(L"d:\\test.exe");
    	wchar_t szBuffer[256];
    	swprintf_s(szBuffer, 256, L"%d", code);
    	MessageBox(szBuffer);
    	code = 1000;
    }
    

    编译运行后,在运行到CreateProcess的时候报错了,截图如下:

    这种错误完全看不懂是为啥,请高手帮忙看看,谢谢了。。。。。。。。。


    da jia hao!

    2019年4月22日 7:10

全部回复

  • 注:test.exe是存在的,能够正常运行的。

    da jia hao!

    2019年4月22日 7:11
  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>未加载wkernelbase.pdb

    你可以尝试按照以下步骤解决问题:
    1,点击调试->选项

    2,选择调试->符号。然后选择复选框“Microsoft Symbol Servers”,标记加载所有模块,然后单击加载所有符号

    如果以上方法不能帮您解决问题,那么可能是“test.exe”名称不正确。一般情况下电脑默认不显示已知文件的扩展名。你需要在左下角搜索框中输入“文件资源管理器选项”并打开,点击“查看”取消“隐藏已知文件类型的扩展名”前面的复选框。

    这时在查看“test.exe”,是不是已经变成了“test.exe.exe”,如果是,则需要修改代码中的文件名。

    Best Wishes,

    Jeanine Zhang
    2019年4月22日 8:07
    版主
  • 你好,

    你有任何更新吗? 如果您的案例已经解决,请帮助标记答案。 如果有,请随时与我们联系。
    您的理解与合作将不胜感激。

    Best Regards,

    Jeanine Zhang

    2019年4月26日 5:28
    版主
  • CreateProcess第二个参数您用错了,应该是LPTSTR,而不是LPCTSTR
    例如这样:
    TCHAR szCommandLine[2 * MAX_PATH] = TEXT("......");
    CreateProcess(..., szCommandLine, ..., &si, &pi);

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2019年5月7日 3:15
    版主