2012-03-06 58 views
1

我想用Windows桌面搜索註冊一個新的過濾器。實現此目標的理想方法是使用現有的持久處理程序CLSID註冊新的過濾器。但由於.html PersistentHandler CLSID,{eec97550-47a9-11cf-b952-00aa0051fe20}受WRP保護(More about the problem),因此無法完成此操作。使用WiX添加一個新的CLSID到Windows註冊表

作爲解決方法,我試圖創建一個與{eec97550-47a9-11cf-b952-00aa0051fe20}完全相同的作業的不同CLSID。

這是我正在關注的示例代碼。我對WiX和編輯Windows註冊表頗爲陌生。

<File Id="HTMLfilter.DLL"> 
    <Class Id="$(var.CLSID_HtmlIFilter)" Context="InprocServer32" ThreadingModel="both" Description="Html Filter" /> 
</File> 

有人可以幫我關於這些;

  • 如何創建不隸屬於任何文件的CLSID?由於我的 新CLSID正在做上述CLSID的工作,我認爲這是 應該如何。

  • 如何創建一個名爲AA子目錄Pe​​rsistentAddinsRegistered 代替InprocSever32

感謝

回答

1

我建議將選定的分支導出到註冊表文件(Export all or part of the registry to a text file)。

然後使用Heat.exe收穫註冊表文件並將其輸出包括在您的項目中。

這是一個例子

<Fragment> 
    <DirectoryRef Id="TARGETDIR"> 
     <Component Id="cmp6E2CE62C9ADECD355465514E3C8F354E" Guid="PUT-GUID-HERE" KeyPath="yes"> 
      <RegistryKey Key=".ascx\PersistentHandler" Root="HKCR"> 
       <RegistryValue Value="{eec97550-47a9-11cf-b952-00aa0051fe20}" Type="string" /> 
      </RegistryKey> 
     </Component> 
    </DirectoryRef> 
</Fragment>