1.對於進程內組件,可以利用windows系統提供的Regsrv32.exe.
比如運行:RegSrv32 d:\com.dll (RegSrv32運行時調用com.dll的引出函數DLLR
egisterServer,真正注冊的是在DLLRegisterServer中實現)
如果要反注冊,可以用:RegSrv32 /u d:\com.dll(此時調用DLLUnregSrvServer函數)
2.對於進程外組件,因為它是可執行文件,不能也沒有必要提供引出函數供其他程序調用來實現注冊.
COM規范規定,支持自注冊的進程外組件必須支持兩個命令參數/RegServer和/UnregServer,來實現注冊和反注冊操作.
3.實現自動卸載
組件對象被卸載的條件:1,組件中對象數為0 2,類廠鎖計數器為0.
COM中提供了一個函數CoFreeAllLibraries,它能檢測當前進程中所有組件程序,當發現某個滿足條件時,就調用FreeLibrary卸載組件.