정보: 이해 CreateProcess 및 명령줄 인수

이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.

이 문서의 영문 버전 보기:175986
요약
이 문서에서는 두 매개 변수를 사용할 때 발생 하는 문제를 clarifyany에는 CreateProcess() API의 ApplicationName andCommandLine 매개 변수 간의 관계.
추가 정보
CreateProcess API의 처음 두 매개 변수는 ApplicationName andCommandLine. 이러한 매개 변수의 동작은 32 비트 프로세스 또는 16 비트 실행 파일 만들면 따라 uponwhether를 다릅니다.

32 비트 프로세스를 만들 때의 CreateProcess()의 동작

사례 1:

ApplicationName 매개 변수를 전달 하 고 명령줄 매개 변수 isNULL ApplicationName 매개도 사용할 CommandLine.This는 전달할 수 있는 추가 명령줄 매개 변수 문자열 inApplicationName을 의미 하지 않습니다. 예를 들어, "파일을 찾을 수 없습니다." 오류와 함께 다음 호출은 실패 합니다.
   CreateProcess( "c:\\MyApp.exe Param1 Param2", NULL, ... )				
사례 2:

반면에 명령줄 매개 변수는 NULL이 아닌 경우 theApplicationName 매개 변수는 NULL API 하려고 합니다 명령줄 매개 변수에서 theapplication 이름을 추출 합니다.

사례 3:

CreateProcess() 함수 (및 가능한 한 점 ofconfusion)의 유연성은 theApplicationName 및 명령줄 매개 변수 모두에 대 한 유효한 문자열 포인터를 전달 하는 경우에 발생 합니다. 이렇게 하면 응용 프로그램에는 ispassed로 theapplication 실행할 전체 명령줄을 지정할 수 있습니다. 하나는 만든된 응용 프로그램에 전달 된 명령줄은 합성 ApplicationName andCommandLine 매개 변수는이 경우가 아니라면 생각할 수 있습니다. 결과적으로 processcreated CreateProcess가 이외의.exe 이름 asits "argv [0]" 매개 변수 값을 받을 수 있습니다. 다음은 "비정상"이 동작을 생성 하는 호출 toCreateProcess의 예입니다.
   CreateProcess( "c:\\MyApp.exe", "Param1 Param2 Param3", ...)				
MyApp의 인수는 다음과 같이 됩니다.
  argv[0] == "Param1"  argv[1] == "Param2"  argv[2] == "Param3"				
참고: ANSI 사양을 argv [0] theapplication 이름과 같아야 합니다 있지만 CreateProcess 제공 32 비트 프로세스에 대해이 규칙을 무시 하 고 호출 응용 프로그램 theflexibility는 필요 합니다.

CreateProcess 16 비트.exe를 실행 하는 경우의 동작

CreateProcess()에서는 매개 변수 passedto 16 비트 응용 프로그램에 대 한 ANSI 설정을 적용 합니다. 다음 andrequires 응용 프로그램에서 CreateProcess 작업 만드는 응용 프로그램 16 비트 또는 32 비트 실행 파일 인지 확인 하는 혼동 될 수 있는 inconsistencybetween을 발생 합니다. 문제를 더욱 복잡 하 게 하려면 CreateProcess WindowsNT 및 Windows 95에서 약간 다르게 구현 됩니다.

Windows NT 동작:

명령줄에서 첫 번째 "매개"는 theApplicationName 문자열과 정확 하 게 합니다 바뀝니다 것 theapplication를 실행 하기 전에. 예를 들어 ApplicationName 및 명령줄 parametersare로 따릅니다.
  CreateProcess( "c:\\MyApp16.exe", "Param1 Param2 Param3", ...)				
그런 다음 해당 응용 프로그램은 명령줄 인수는 다음과 같습니다.
  argv[0] == "c:\MyApp16.exe"  argv[1] == "Param2"  argv[2] == "Param3"				
Windows 95 동작:

명령줄에서 첫 번째 "매개" theApplicationName 문자열과 정확 하 게는 CreateProcess 되지 founderror 파일을 사용 하 여 실패 합니다. 따라서은 아니지만 결코 전달할 경우에 Windows 95에서 CreateProcess theApplicationName 인수로 NULL areexecuting 16 비트 응용 프로그램을.

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 175986 - 마지막 검토: 04/08/2016 08:17:00 - 수정: 5.0

Microsoft Win32 Application Programming Interface

  • kbapi kbconsole kbinfo kbkernbase kbthread kbmt KB175986 KbMtko
피드백