使用CreateProcess函数创建进程出错
如题,我的代码如下:
STARTUPINFO strinfo;
PROCESS_INFORMATION ProcessInfomation;
memset(&strinfo,0,sizeof(strinfo));
SoftView.SetWindowTextW(_T("正在安装迅雷7"));
strinfo.cb = sizeof(strinfo);
BOOL ret = CreateProcess(NULL,_T("regedit.exe"),NULL,NULL,TRUE,DETACHED_PROCESS,NULL,NULL,&strinfo,
&ProcessInfomation);
if (ret)
{
WaitForSingleObject(ProcessInfomation.hProcess,NULL);
}
运行时出现错误如下:
程序 中的 0x76a670ac 处最可能的异常: 0xC0000005: 写入位置 0x00e2f13a 时发生访问冲突
这是为什么?
[解决办法]
看MSDN
- C/C++ code
BOOL WINAPI CreateProcess( __in_opt LPCTSTR lpApplicationName, __inout_opt LPTSTR lpCommandLine, // 这是入参、出参,所以不能为常量地址 __in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes, __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, __in BOOL bInheritHandles, __in DWORD dwCreationFlags, __in_opt LPVOID lpEnvironment, __in_opt LPCTSTR lpCurrentDirectory, __in LPSTARTUPINFO lpStartupInfo, __out LPPROCESS_INFORMATION lpProcessInformation);
[解决办法]
还要看你在Windows7或者是windows XP下,如果是前者,第二个参数必须用参数传进来,如果是xp,则可以直接赋值。
[解决办法]
我没记错的话 CreateProcess第二个参数是LPTSTR 实际上内部会改变这个字符串 函数返回时还原 核心编程有讲