[英]How to check whether the tlb file is registered in registry using C++?
我使用c#創建了一個類庫。我已經使用注冊了類庫
regasm ..
RegAsm.exe Discovery.dll /tlb: Discovery.dll /codebase
現在我想知道程序集是否已注冊使用c ++。 我需要因為我必須檢查注冊表中的這個DLL,如果它沒有注冊我必須以編程方式注冊它,如果它已注冊然后我只是跳過它。
那我怎么知道匯編是否注冊使用c ++ ...
使用LoadRegTypeLib加載它,並檢查錯誤的返回值。 例如:
HRESULT hr;
ITypeLib *libraryIntf;
hr = LoadRegTypeLib(IID_GuidOfTypeLibrary, LibraryVersionMajor,
LibraryVersionMinor, 0, &libraryIntf);
if(SUCCEEDED(hr))
{
libraryIntf->Release();
libraryIntf = NULL;
// Type library is registered and can be loaded.
}
else
{
// Type library is not registered.
}
檢查HKEY_CLASSES_ROOT下的注冊表:
使用RegOpenKeyEx
函數打開密鑰。 如果密鑰存在,則該函數返回成功。
為什么你需要打擾? 如果它已經存在,那么再次注冊是沒有害處的。
通常可以在HKEY_CLASSES_ROOT \\ CLSID {guid}下的注冊表中找到庫UUID。 通過檢查該密鑰,您知道dll是否已注冊。 RegGetKeyValue
可以做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.