본문 바로가기
IT-개발,DB

[VC++] DLL이나 OCX를 레지스트리에 등록하거나 제거..(regsvr32)

by SB리치퍼슨 2010. 9. 7.

DLL이나 OCX를 레지스트리에 등록하거나 제거..
regsvr32를 이용한다..

예)
regsvr32 "C:ProjectNeoTest 2.60_Output_Debugeoweboardax.ocx"
regsvr32 /u  "C:ProjectNeoTest 2.60_Output_Debugeoweboardax.ocx"
regsvr32 /s  "C:ProjectNeoTest 2.60_Output_Debugeoweboardax.ocx"
regsvr32 /s /u  "C:ProjectNeoTest 2.60_Output_Debugeoweboardax.ocx"
regsvr32 /s /c  "C:ProjectNeoTest 2.60_Output_Debugeoweboardax.ocx"

/u : Unregister
/s : Silent
/c : Console output

regsvr32는 DLL이나 OCX를 호출하고, DLL내부의 DllRegisterServer()과 DllUnregisterServer()을 호출하는 역할을 한다.
만약 regsvr32를 사용하지 않고 직접 등록하려면 다음과 같이 할 수 있다..(Devpia 참고..)

// Usage
AfxMessageBox( RegFunc("MsComm.ocx") );  

CString RegFunc(LPCTSTR lpOCXName) 
{

CString systemDir = _T("");
CString FindFileName = _T("");

::GetSystemDirectory(  systemDir.GetBuffer(255), 255);

FindFileName.Format("%s\%s", systemDir, lpOCXName);

HINSTANCE h = ::LoadLibrary(FindFileName);

if (h != NULL) {
FARPROC pFunc = ::GetProcAddress(h,"DllRegisterServer");
if (pFunc != NULL)
{
(*pFunc)();
} else {
FindFileName.Format("%s 등록 실패 되었읍니다.", lpDiscript);
return FindFileName; 
}
::FreeLibrary(h);

FindFileName.Format("%s 등록 되었읍니다.", lpDiscript);
return FindFileName;
} else {
FindFileName.Format("%s 등록 실패 되었읍니다.", lpDiscript);
return FindFileName;

}


출처: http://ninvu.egloos.com/1936098
반응형

댓글