현재 자신이 서비스 모드로 실행되었는지 콘솔모드로 실행되었는지 확인하는 방법
테스트 환경 :
Visual Studio 2008, Windows 7 32bit
테스트 코드 :
확인방법1. 현재 프로그램 실행 디렉토리 확인
#include <direct.h>
char buffer[MAX_PATH] = {0};
_getcwd(buffer, MAX_PATH);
로깅(buffer)
확인방법2. GetStdHandle() 이용하여 standard handle 보유 여부 확인
HANDLE handle = GetStdHandle(STD_INPUT_HANDLE);
if (handle == NULL) { // NULL 인 경우 서비스 실행
로깅 ( "is service mode!!" )
} else {
로깅 ( "is console mode!!" )
}
결과값 :
확인방법1.
콘솔로 실행시 : 실제 .exe 위치한 디렉토리 출력됨 (ex. d:\application)
서비스로 실행시 : C:\Windows\system32
확인방법2.
콘솔로 실행시 : "is console mode!!" 출력 됨
서비스로 실행시 : "is service mode!!" 출력 됨
결론 :
확인방법2. GetStdHandle(STD_INPUT_HANDLE) 의 리턴이 NULL 인경우 서비스 실행으로 인식하는 방법 사용.
'C++' 카테고리의 다른 글
MFC, GDI (0) | 2012.04.06 |
---|---|
WTL : Windows Template Library (0) | 2012.04.06 |
log4cxx warning 관련 C4275 (0) | 2012.04.06 |
OTL 샘플 (0) | 2012.04.06 |
strsafe.h (0) | 2012.03.24 |
openssl + AES256 + Base64 (0) | 2012.03.11 |
UTF-8 변환 (UTF8Conv.h) (0) | 2012.03.10 |
#pragma message 를 활용한 할일 적어두기 (0) | 2012.03.07 |