| 1. regsvr32 사용시 띄어쓰기 들어간 Path(Program Files폴더등)에 있는 파일 등록방법!! regsvr32.exe /s "PATH_NAME" (cmd창에서도 인자를 ""로 감싸면 등록이 된다.) 이런식으로 인자를 넣어주면 뒤에 공백이 들어가도 처리가 된다. * 문자열 안에 \" 를 입력하면 " 로 인식된다. ShellExevuteEx함수를 이용하면 더 쉬울꺼 같고 아니면 bat파일을 만들어서 실행하는것도 한가지 방법! 2. *bat을 이용한 직접실행과 *.reg를 이용한 레지스트리 등록 방법! 1) 직접전달(bat파일로 실행) MYREGSVR.BAT (이름은 맘대로) 을 만든다. 내용은 다음 딱 한줄. regsvr32 %1
* 첫 번째 방법: Taskbar에 REGSVR.BAT파일을 드래그 하여, 빠른실행(Quick Launch) 바에 복사해 넣는다. 그리고 빨간 동그라미가 있는 부분에 dll이나 ocx파일들을 드래그앤드롭하면 끝!
* 두 번째 방법: 보내기(SendTo) 디렉토리에 REGSVR.BAT 파일을 복사해 넣는다. -> XP기준 계정이 Administrator라면 C:\Documents and Settings\Administrator\SendTo가 되겠다. 그러면 탐색기등에서 DLL, OCX파일을 선택하고 마우스 오른쪽 버튼 누른 후 메뉴에서 보내기를 MYREGSVR.BAT에 하면 끝!
2) 레지스트리에 등록(dll,ocx 선택시 마우스 오른쪽메뉴'context menu'에 자동으로 메뉴가 나오게..) 'REGSVR.reg'의 내용을 REGEDIT4 [HKEY_CLASSES_ROOT\dllfile\shell\레지스트리등록(&R)\Command] @="\"regsvr32\" \"%L\""
[HKEY_CLASSES_ROOT\dllfile\shell\레지스트리등록해제(&U)\Command] @="\"regsvr32\" /u \"%L\""
[HKEY_CLASSES_ROOT\ocxfile\shell\레지스트리등록(&R)\Command] @="\"regsvr32\" \"%L\""
[HKEY_CLASSES_ROOT\ocxfile\shell\레지스트리등록해제(&U)\Command] @="\"regsvr32\" /u \"%L\""
이렇게 써준다. 저장을 한 뒤에 더블클릭 해서 레지스트리에 추가해준다. 탐색기 등에서 dll,ocx파일 선택 후 마우스 오른쪽 버튼을 누르면 '레지스트리등록/레지스트리등록해제' 메뉴가 보인다. * 제거하는 reg파일 만드는 방법.. 원하는 키값 앞에 - 만 붙이면 된다.
REGEDIT4 [-HKEY_CLASSES_ROOT\dllfile\shell] [-HKEY_CLASSES_ROOT\ocxfile\shell]
이런식으로....
* dll에서 함수포인터 얻어서 처리 regsvr32라는 프로그램은 dll내부의 DllRegisterServer() 함수 포인터만 받아서 호출해주는 역할만 하는거 같다.
LoadLibrary GetProcAddress( "DllRegisterServer" ); Func(); FreeLibrary
LoadLibrary로 dll, ocx, ax다 된다. DllRegisterServer 하면 자기 자신을 레지스트리에 등록하고 DllUnregisterServer는 등록된 정보를 삭제하는 기능을 한다. regsvr32도 인스톨쉴드도 dll이나 ocx, ax를 등록할때 LoadLibrary로 로드해서 이 함수들을 호출한다. 이 방법이 아니라면 이 dll, ocx, ax파일이 등록될때 기록하는 레지스트리 경로나 값들을 모두 조사한 다음에 직접 써 주면 되겠다. * 프로그램 실행 되어 있을때(ocx사용) mfc 다이얼로그에서 위 코드로 DllUnregisterServer를 호출하고 FreeLibrary시 프로그램이 죽는 현상을 발견했다; ocx문제일까? -> 리소스 해제를 잘못하면 죽기도 한다는데; 거래 업체 dll이용해서 ocx만들고 웹에 올려본적 있는데 창을 닫으면 익스플로러 전체가 죽었던 일이 있었다. 그 업체 dll이 개판이라 종료시 다이얼로그를 삭제를 안했다는걸 밝혀냈지만.. 초짜였던 본인은 activex로 할 수 있는 짓은 별걸 다해봤었던거 같다 ㅡ.ㅡ;
* regsvr소스? http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=5478&ref=1876
4. 이미 있을껀 다있다 ㅡ.ㅡ; 1) RegSvrHelp http://cobaltic5.tistory.com/entry/RegSvrHelp 이곳에 가면 RegSvrHelp라는 프로그램이 있다. 설치하면 dll이 일반 dll인지 com인지 판단을 하여 context menu에 나타난다. exe도 등록할수 있다. * 본인 컴터에선 이상한 현상?이 있었다;; 편한 툴인데 아깝다; 2) RegSvrEx - An Enchanced COM Server Registration Utility http://www.codeproject.com/KB/winsdk/regsvrex.aspx codeproject에 소스가 공개되어 있다.
| |
'Language > C++' 카테고리의 다른 글
| Regsvr32 사용법 및 오류 설명 (0) | 2016.02.04 |
|---|---|
| Dynamic Library 과 Static Library 차이점 (0) | 2016.02.04 |
| Regsvr32 사용법 및 오류 설명 (0) | 2014.02.18 |
| Dynamic Library 과 Static Library 차이점 (0) | 2014.02.18 |