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;
}
[解决办法]
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";