리눅스에는 fork();함수도 있고 execl();도 있는데... 

윈도우에서 프로세스에서 다른 프로그램을 실행시키려고 하니까 fork();가 없구 그래서 CreateProcess API를 사용해야 한다네요 ㅠㅠ


일단 CreateProcess 함수부터 살펴봅시다.!


BOOL CreateProcess(

LPCTSTR lpApplicationName,    //생성프로세스의 실행파일 이름

LPTSTR lpCommandLine,    //argc,argv인자 전달, 첫인자를 NULL로 주고 실행파일이름 인자 써도 가능

LPSECURITY_ATTRIBUTES lpProcessAttributes,    //보안속성 보통NULL

LPSECURITY_ATTRIBUTES lpThreadAttributes,    //쓰레드 보안속성 보통NULL

BOOL blnheritHandles,    //전달인자가 TRUE면 자식프로세스는 부모의 핸들중일부상속

DWORD dwCreationFlags,    //프로세스의 특성결정

LPVOID lpEnvironment,    //메모리 블록관리 문자열저장.

LPCTSTR lpCurrentDirectory,    //생성하는 프로세스의 현재 디렉터리 설정

LPSTARTUPINFO lpStartupinfo,    //STARTUPINFO 구조체 변수 포인터

LPPROCESS_INFORMATION lpProcessinformation);//PROCESS_INFORMATION 변수의주소값




ex)

#include<windows.h>

#include<stdio.h>

#include<tchar.h>


int main(int argc,char *argv[]){

  STARTUPINFO si={0,};

PROCESS_INFORMATION pi;

si.dwX=0;

si.dwY=0;

si.dwXSize=0;

si.dwYSize=0;

si.dwFlags= STARTF_USEPOSITION | STARTF_USESIZE;

si.wShowWindow=SW_HIDE;

CreateProcess(NULL,"bad_code.exe hecked",NULL,NULL,TRUE, DETACHED_PROCESS,NULL,NULL,&si,&pi);

return 0;

}

새로 생성되는 프로세스는 윈도우창을 띄우지 않는다.

'System > Windows' 카테고리의 다른 글

visual studio DLL complie  (0) 2012.08.21
Message HOOK - Window  (0) 2012.08.20
파일복사 api  (0) 2012.08.02
WinAPI 레지스트리  (0) 2012.07.27
WinApi MessageBox  (0) 2012.07.26

+ Recent posts