메뉴 건너뛰기

프로그래밍


다음 샘플은 실행 파일 자체가 리소스로 등록되어 있는 경우 입니다.

이 때 등록된 리소스가 ID_ 계열이 아닌 "TEST.EXE"라는 형태로 되어 있다고 생각하시면 됩니다.

// Get the instance handle - required for loading the resource

HINSTANCE hInst = AfxGetInstanceHandle();

// Load the user-defined resource.

HRSRC hExeFile = ::FindResource(hInst, "TEST.EXE", "EXE_RESOURCE");

HGLOBAL hRes = ::LoadResource(hInst, hExeFile);

DWORD dwSize = ::SizeofResource(hInst, hExeFile);

if (hRes != NULL)

{

UINT FAR* lpnRes = (UINT FAR*)::LockResource(hRes);

TRY

{

// Create the .exe file

CFile file(lpszFileName, CFile::modeCreate or CFile::modeWrite); //lpszFileName은 함수 인자로 넘어온 것입니다.

// Write the user-defined resource to the .exe file

file.WriteHuge(lpnRes, dwSize);

file.Flush();

}

CATCH(CFileException, e)

{

}

END_CATCH

::FreeResource(hRes);

}

리소스의 내용을 고스란히 실행 파일로 복구가 되었다고 보시면 됩니다.

즉, 복구할 때 경로는 윈도우 폴더의 템프 폴더를 주로 이용하셔도 되겠죠..

이미지야 바로 로딩해서 사용하시면 되구요..

특정 바이너리를 열어서 데이터를 읽어서 사용하는경우 위의 LockResource단계에서 부터 해당 포인터 위치에서 시작해서 읽어 나가는 형태를 취하면 됩니다.(즉, 파일 오픈/클로즈가 배제된 형태로 사용하시면 된답니다)

위와 같이 내부에서보다 외부에서 실행해야 할 경우는 임시폴더로 생성후 실행하시면 됩니다.

즉, INF 파일과 같이 외부의 기능을 이용해서 등록을 하는 경우 INF 파일 자체를 임시 폴더에 리소스로부터 생성한 다음

ShellExecute(NULL, "Open", "<생성된 INF 파일>", NULL, <임시폴더까지의경로>, SW_???);

형태로 실행시키면 등록이 된답니다.

그럼 이만..


http://www.devpia.com
안창근(prodori)


예제 소스 링크
/pds2/webbbs.cgi?action=view&value=23&bbs=language







번호 제목 글쓴이 날짜 조회 수
공지 [TIP] PYTHON 에서 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 6987: illegal multibyte sequence" 오류 날때... [51] 파이팅건맨 2016.02.20 143675
공지 [TIP] R에서 페이스북 페이지 정보 크롤링 하기 [6] 파이팅건맨 2017.02.11 19726
공지 [TIP] TensorFlow를 윈도우에서 사용하기 (A way to use TensorFlow on Windows) [3] 파이팅건맨 2016.04.16 15320
86 [LINK] VC++7 to VC++6 project converter 파이팅건맨 2004.04.28 574
85 [링크]CDirectoryChangeWatcher - ReadDirectoryChangesW 파이팅건맨 2004.03.04 403
84 [TIP] 헝가리안 표기법 파이팅건맨 2004.01.09 448
83 SNTP Protocol을 이용하는 소스 예제 파이팅건맨 2003.12.30 558
82 제로보드에 GUNCLIENT 컨트롤 적용하는 방법 파이팅건맨 2003.12.30 497
81 Three Ways to Inject Your Code into Another Process 파이팅건맨 2003.12.29 190
80 Single interface for enumerating processes and modules under NT and Win9x/2K 파이팅건맨 2003.12.29 197
79 개발자가 알아야 할 10가지 보안 팁으로 코드 보호하기 파이팅건맨 2003.12.29 1850
78 register와 volatile 키워드 파이팅건맨 2003.11.06 342
77 Struct Packing 에 관한 설명 파이팅건맨 2003.12.29 176
76 PE 화일의 헤더구조를 보여주는 소스 입니다. 파이팅건맨 2003.09.04 394
75 VB에서 프로세스 실행시 우선순위 주기 파이팅건맨 2003.08.22 463
74 데브피아에 글을 올린 김태완입니다. [1] 김태완 2003.08.21 393
» 필요한 모든 파일 합쳐서 하나의 .exe 파일 만들기 파이팅건맨 2003.08.27 1357
72 [MFC]GIF Animation Control 파이팅건맨 2003.08.05 1580
71 [GCC] C에서 밀리세컨드 구하는 법 (2) 파이팅건맨 2003.07.29 781
70 인터넷 익스플로러 툴바(툴밴드) 관련 소스링크 파이팅건맨 2003.07.23 374
69 scanf, printf와 같이 다수의 파라메터 처리 방법(MSDN) 파이팅건맨 2003.08.20 393
68 PHP,ASP,PERL에서 파일사이즈 알아내는 방법(For GunClient...) 파이팅건맨 2003.05.30 512
67 CRC 체크 C 소스 입니다. 파이팅건맨 2003.03.24 1798
위로