簡體   English   中英

如何取消注冊/刪除在注冊表中創建的所有COM條目

[英]How do I unregister/remove all COM entries created in registry

如何刪除注冊表中為ProgID(“Log.Main”)注冊的所有COM條目。

我有一個使用regasm注冊的COM組件,現在我可以在注冊表(“Log.Main”)中的CLSID下看到這個COM組件(使用oleview.exe)的多個類ID。

我想使用C#從注冊表中刪除與此COM組件相關的所有條目和ProgID'Log.Main',或者是否有其他注冊表清理工具可用的工具。

除非您仍擁有原始組件,否則通常無法進行此操作。 ProgId只為您提供Classes注冊表項中的條目,即CLSID {guid}。 您將無法在TypeLibInterface注冊表項中找到條目,因為您不知道它們的{guid}。

為避免注冊表污染, 重建組件之前首先取消注冊該組件非常重要。 當您在Project + Build選項卡屬性頁上的.NET項目中使用“Register for COM interop”選項時,MSBuild會自動完成此操作。 有了你需要運行VS提升的怪癖,所以MSBuild可以使用寄存器,右鍵單擊快捷方式並選擇以管理員身份運行。

如果由於某種原因這是不切實際的,那么你可以通過顯式使用[Guid]屬性來找到一些解脫,所以類型庫,接口和類guid總是相同的。 但是,當您完成調試和測試組件時,再次刪除它們非常非常重要,否則當您進行更改時風險非常嚴重的DLL Hell。 非常贊成MSBuild為您自動執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM