首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

CreateProcess()运行时发生访问冲突,该如何解决

2012-03-26 
CreateProcess()运行时发生访问冲突#include stdafx.h#include Windows.h#include iostreamusing na

CreateProcess()运行时发生访问冲突
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 STARTUPINFO si={sizeof(si)};
 PROCESS_INFORMATION pi;
 
 LPCTSTR str=L"C:\\Image.exe";
 LPTSTR szCommandLine=(LPTSTR)str;

 si.dwFlags=STARTF_USESHOWWINDOW;
 si.wShowWindow=true;

 BOOL bRet=::CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
 if(bRet){
  CloseHandle(pi.hThread);
  CloseHandle(pi.hProcess);
  cout<<"新进程的进程ID号"<<pi.dwProcessId<<endl;
  cout<<"新进程的线程ID号"<<pi.dwProcessId<<endl;
 }
 
 return 0;
}
rt,运行时抛出异常,这种问题真不知道该怎么调试了,拜托大家了~~我用的visual studio2008编译器

[解决办法]
#include <Windows.h>
#include <iostream>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 STARTUPINFO si={0};
 si.cb=sizeof(si);
 PROCESS_INFORMATION pi={0};
 
 LPCTSTR str=L"c:\\WINDOWS\\NOTEPAD.EXE";
 LPTSTR szCommandLine=(LPTSTR)str;

 BOOL bRet=::CreateProcess(str,NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
 if(bRet){
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
cout<<"新进程的进程ID号"<<pi.dwProcessId<<endl;
cout<<"新进程的线程ID号"<<pi.dwProcessId<<endl;
 }
 
 return 0;
}
[解决办法]

C/C++ code
 LPCTSTR str=L"c:\\WINDOWS\\NOTEPAD.EXE"; LPTSTR szCommandLine=(LPTSTR)str;==> LPTSTR szCommandLine[] = TEXT("c:\\WINDOWS\\NOTEPAD.EXE");
[解决办法]
把UAC关掉试试
[解决办法]
STARTUPINFO si={sizeof(si)};
改成
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
试试
[解决办法]
LPTSTR szCommandLine=(LPTSTR)str;

TCHAR szCommandLine[]="c:\\WINDOWS\\NOTEPAD.EXE";

热点排行