[MFC] 프로세스 파일 경로

소스코드

CHAR    sProcessName[MAX_PATH] = {0,};
DWORD   nSize    = sizeof(CHAR)*MAX_PATH;;
DWORD   nLen     = 0;
HANDLE  hProcess = GetCurrentProcess();

ZeroMemory(sProcessName, nSize);
if( QueryFullProcessImageName(hProcess, 0, sProcessName, &nSize) ){
    TRACE("QueryFullProcessImageName : %s\n", sProcessName);
}

ZeroMemory(sProcessName, nSize);
if( (nLen =GetModuleFileName(NULL, sProcessName, sizeof(sProcessName))) > 0 ){
    sProcessName[nLen] = 0;
    TRACE("GetModuleFileName         : %s\n", sProcessName);
}

ZeroMemory(sProcessName, nSize);
if( (nLen =GetModuleFileNameEx(hProcess, NULL, sProcessName, sizeof(sProcessName))) > 0 ){
    sProcessName[nLen] = 0;
    TRACE("GetModuleFileNameEx       : %s\n", sProcessName);
}

ZeroMemory(sProcessName, nSize);
if( (nLen =GetProcessImageFileName(hProcess, sProcessName, sizeof(sProcessName))) > 0 ){
    sProcessName[nLen] = 0;
    TRACE("GetProcessImageFileName   : %s\n", sProcessName);
}

실행결과

QueryFullProcessImageName : D:\My Project\ProcessInfo\Debug\ProcessInfo.exe
GetModuleFileName         : d:\My Project\ProcessInfo\Debug\ProcessInfo.exe
GetModuleFileNameEx       : d:\My Project\ProcessInfo\Debug\ProcessInfo.exe
GetProcessImageFileName   : \Device\HarddiskVolume1\My Project\ProcessInfo\Debug\ProcessInfo.exe
2013/09/24 17:54 2013/09/24 17:54
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[svn] history 제거

1) SVN myproject 저장소 덤프

  #> svnadmin dump myproject -r Head > myproject.dump

       -r 옵션을 주지 않을 경우 모든 리비전이 덤프됨.

2) myproject 저장소 삭제

  #> rm -rf myproject

3) 신규 저장소 생성

 #> svnadmin creage myproject --fs-type bdb

     --fs-type 의 기본값  fsfs, berkeley db 인경우  bdb

4) 덤프 파일 로드

 #> svnadmin load myproject --force-uuid < myproject.dump

     --force-uuid : dump파일에 있는 리비전을 유지

"프로그래밍 / Subversion" 분류의 다른 글

[svn] Subversion + Trac + Apache (2)2007/12/10
2010/02/25 13:45 2010/02/25 13:45
태그 : , ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

1. 설치 환경
    Visual Studio 2008, WinXP

2. 설치 준비
    OpenSSL 소스 다운로드 : http://www.openssl.org/source
    ActivePerl 다운로드       : http://www.activestate.com/activeperl
   
    > ActivePerl 설치
    > OpenSSL 소스 압축 해제

3. 시작 > 실행 > cmd
    > OpenSSL 폴더로 이동
    예) cd D:\My Project\OpenSSL\openssl-0.9.8k

4. OpenSSL Configure
    > perl Configure 옵션 VC-WIN32 --prefix=설치디렉토리
    예) perl Configure no-idea no-mdc2 no-rc5 VC-WIN32 --prefix="D:\My Project\OpenSSL"
        상용알고리즘 idea, mdc2, rc5 미설치.

5. Visual C++ 환경변수 로딩
    > C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
   
6. Make 파일 생성
    > ms\do_masm

7. 소스 수정 
    > OpenSSL 폴더 (예: D:\My Project\OpenSSL\openssl-0.9.8k)에 있는 다음 파일을 수정한다.  
        crypto\cversion.c    105 Line
            return "OPENSSLDIR: \"" OPENSSLDIR "\"";
            =>
           
return "OPENSSLDIR: \" OPENSSLDIR \"";

        crypto\cryptlib.h    84-86 Line
            #define X509_CERT_DIR       OPENSSLDIR "/certs"
            #define X509_CERT_FILE      OPENSSLDIR "/cert.pem"
            #define X509_PRIVATE_DIR    OPENSSLDIR "/private"
            =>
            #define X509_CERT_DIR       OPENSSLDIR "\\certs
"
            #define X509_CERT_FILE      OPENSSLDIR "
\\cert.pem
"
            #define X509_PRIVATE_DIR    OPENSSLDIR "
\\private
"

        crypto\opensslconf.h    107-108 Line
            #define ENGINESDIR "D:\My Project\OpenSSL/lib/engines"
            #define OPENSSLDIR "D:\My Project\OpenSSL/ssl"
            =>
            #define ENGINESDIR "D:\\My Project\\OpenSSL\\lib\\engines"
            #define OPENSSLDIR "D:\\My Project\\OpenSSL\\ssl"


        crypto\x509v3\v3_pci.c
        crypto\x509v3\v3_pcia.c

            Visual C++ 2008에서 위 두파일은 연뒤
            파일 > 저장 고급 옵션 > 인코딩 > 유니코드(서명 있는 UTF-8) - 코드 페이지 65001
            로 저장한다

    > D:\My Project\OpenSSL\openssl-0.9.8k 와 같이 소스가 있는 폴더명에 공백이 포함되어 있는경우
       util/copy.pl 파일을 다음과 같이 수정
       
       util/copy.pl 15-26 Line
            foreach $arg (@ARGV) {
                if ($arg eq "-stripcr")
                    {
                    $stripcr = 1;
                    next;
                    }
                $arg =~ s|\\|/|g;    # compensate for bug/feature in cygwin glob...
                foreach (glob $arg)
                    {
                    push @filelist, $_;
                    }
            }
            =>
            foreach $arg (@ARGV) {
                if ($arg eq "-stripcr")
                    {
                    $stripcr = 1;
                    next;
                    }
                $arg =~ s|\\|/|g;    # compensate for bug/feature in cygwin glob...
                if (-d $arg)
                {
                    $arg="\"$arg\"";
                }
                foreach (glob $arg)
                    {
                    push @filelist, $_;
                    }
            }


8. 정적 라이브러리 컴파일 및 설치
    nmake -f ms\nt.mak
    nmake -f ms\nt.mak test
    namke -f ms\nt.mak install

     ※ 동적 라이브러리로 설치하고자 할경우 "namke -f ms\ntdll.mak"로 컴파일 및 설치한다.

2009/05/11 19:45 2009/05/11 19:45
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다