GetSystemDirectory

원형

UINT GetSystemDirectory(LPTSTR lpBuffer, UINT uSize);

MFC 원형

해당하는 함수 없음

인수

▶lpBuffer : 윈도우즈 시스템 디렉토리의 경로를 대입받을 출력용 버퍼.

▶uSize : 버퍼의 크기

리턴

성공하면 버퍼에 복사된 문자 개수가 리턴되며 버퍼의 크기가 작아 실패한 경우 요구되는 버퍼 크기를 리턴한다. 경로를 구하지 못했을 경우 0을 리턴한다.

설명

윈도우즈 시스템 디렉토리의 경로를 구한다. lpBuffer는 경로를 대입받을 수 있는 충분한 길이를 제공해야 하는데 일반적으로 MAX_PATH길이면 충분하다. 조사된 경로는 백슬레쉬 문자를 포함하지 않는다. 시스템 디렉토리는 운영체제 동작에 필수적으로 필요한 DLL, OCX, DRV 등의 중요한 파일을 가진다.

시스템 폴더는 윈도우즈 디렉토리 아래에 있으며 일반적으로 95/98계열은 System이라는 이름을 가지며 NT/2000계열은 System32라는 이름을 가진다. 그러나 다음 버전의 운영체제에서는 이 디렉토리의 이름이 바뀔 수도 있으므로 시스템 디렉토리의 경로가 필요한 경우는 반드시 이 함수로 그 경로를 조사하여 사용해야 한다. 예를 들어 시스템 폴더에 DLL을 복사하는 설치 프로그램의 경우 이 폴더의 경로를 정확하게 구해 복사해야 모든 프로그램이 DLL을 제대로 공유할 수 있다. 다음 코드는 Src 경로에 있는 MyProgram.dll을 윈도우즈 시스템 폴더로 복사한다.

GetSystemDirectory(Dest,MAX_PATH);
strcat(Dest,"\\MyProgram.dll");
CopyFile(Src,Dest,FALSE);

일반적으로 설치 프로그램이 이 함수를 많이 사용하는데 마찬가지 이유로 설치 해제 프로그램도 삭제할 프로그램의 정확한 경로를 조사하기 위해 이 함수를 사용해야 한다.

예제 1

다음 예제는 시스템 폴더를 조사해서 보여준다. 실행 결과는 이렇다.

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR SysPath[MAX_PATH];

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		GetSystemDirectory(SysPath,MAX_PATH);
		TextOut(hdc,2,2,SysPath,lstrlen(SysPath));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

 

참고함수

GetWindowsDirectory : 윈도우즈가 설치된 경로를 조사한다.

플랫폼

95이상

참조

 


written by http://www.winapi.co.kr