CPP > win32 > 레지스트리 등록

Redjini WiKi
< cpp‎ | win32


DLL, OCX 레지스트리 등록

OCX(DLL)파일 내에 선언되어있는 DllRegisterServer와 DllUnregisterServer를 호출함으로써 프로그램을 레지스트리에 등록할수 있습니다.

Install Shield와 같은 설치프로그램을 이용하면 쉽게 레지스트리에 등록가능하나 이를 이용하지 않을때 간단하게 쓸수 있는 함수 입니다.

소스
BOOL CRegSvr32::Install(LPCSTR sPath){
       HRESULT (STDAPICALLTYPE * lpDllEntryPoint)(void);
       HINSTANCE hLib = LoadLibraryEx(sPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
       if (hLib < (HINSTANCE)HINSTANCE_ERROR) {
               INSTALL_FAIL();
       }
       (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
       if (lpDllEntryPoint == NULL) {
               INSTALL_FAIL();
       }
       if (FAILED((*lpDllEntryPoint)())) {
               INSTALL_FAIL();
       }
       FreeLibrary(hLib);
       return TRUE;
}
 
BOOL CRegSvr32::UnInstall(LPCSTR sPath){
       HRESULT (STDAPICALLTYPE * lpDllEntryPoint)(void);
       HINSTANCE hLib = LoadLibraryEx(sPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
       if (hLib < (HINSTANCE)HINSTANCE_ERROR) {
               INSTALL_FAIL();
       }
       (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllUnregisterServer");
       if (lpDllEntryPoint == NULL) {
               INSTALL_FAIL();
       }
       if (FAILED((*lpDllEntryPoint)())) {
               INSTALL_FAIL();
       }
       FreeLibrary(hLib);
       return TRUE;
}