2016-11-24 12 views
0

내 프로젝트에서 외부 프로그램 c:\pro\prog1.exe을 시작해야합니다. 외부 프로그램의 구성 파일은 동일한 디렉토리 c:\pro\prog1.ini에 있습니다.디렉토리에서 외부 프로그램을 시작하십시오.

ShellExecute(NULL,L"open",L"c:\pro\prog1.exe" ,NULL,NULL,SW_SHOWDEFAULT); 

프로그램 c:\pro\prog1.exe 시작하지만, 구성 파일 c:\pro\prog1.ini을로드하지 않습니다 내가 할. 호스트 응용 프로그램을 실행하는 디렉토리에 .ini 파일을 배치해야합니다. 이것은 허용되지 않습니다. 그렇다면 외부 프로그램을 시작하고 Windows에서 해당 디렉토리에서 실행하도록 요청하는 방법은 무엇입니까?

+0

Process 클래스와 해당 ProcessStartInfo 지원 클래스를 사용하지 않는 이유는 무엇입니까? 그것으로 당신은 정확하게 WorkingDirectory를 지정할 수 있습니다. – Steve

+0

당신은'CreateProcess' 함수를 사용할 필요가 있습니다 - 여기에 파라미터가 존재합니다 - LPCTSTR lpCurrentDirectory' - 당신이 정확히 필요로하는 것 – RbMm

+3

5 번째 매개 변수는 시작 디렉토리입니다 :'ShellExecute (NULL, L "open" L "c : \\ pro \\ prog1.exe", NULL, L "c : \\ pro \\", SW_SHOWDEFAULT); ' –

답변

1

ShellExecute의 다섯 번째 매개 변수가 시작 디렉토리입니다.

또는 "prog.exe"GetModuleFileNamePathRemoveFileSpec을 사용하여 주석에서 제안 된대로 고유 한 디렉토리를 찾을 수 있습니다.

"c:\\Program Files""c:\\Program Files (x86)"과 같은 일부 디렉토리에는 파일 작성/수정/삭제 (예 : 설치 중)에 대한 액세스가 높아야함에 유의하십시오. 높은 액세스 권한이없는 프로세스는 보호 된 디렉토리의 파일에 읽기 전용 플래그로 액세스 할 수 있습니다. 그렇지 않으면 쓰기 액세스가 요청 된 경우 Windows에서 경로를 다른 디렉토리로 리디렉션합니다.

정상적인 실행을 위해 * .exe는 "Documents" 또는 "AppData" 폴더를 사용하여 데이터를 읽거나 씁니다.