2012-03-06 62 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>