typedef HRESULT (WINAPI * FREG)(); TCHAR szWorkPath[ MAX_PATH ]; ::GetCurrentDirectory( sizeof(szWorkPath), szWorkPath ); // 保存当前进程的工作目录 ::SetCurrentDirectory( 组件目录 ); // 切换到组件的目录 HMODULE hDLL = ::LoadLibrary( 组件文件名 ); // 动态装载组件 if(hDLL) { // 取得注册函数指针 FREG lpfunc = (FREG)::GetProcAddress( hDLL, _T("DllRegisterServer") ); // 如果是反注册,可以取得"DllUnregisterServer"函数指针 if ( lpfunc ) lpfunc(); // 执行注册。这里为了简单,没有判断返回值 ::FreeLibrary(hDLL); } ::SetCurrentDirectory(szWorkPath); // 切换回原先的进程工作目录