所有用户的注册表

时间:2014-07-06 09:03:11

标签: c# wix registry installer wix3.5

我为dll创建了一个per machine安装程序。

HKEY_LOCAL_MACHINE下正确创建了注册表。

HKEY_CLASSES_ROOT下的类定义仅为安装程序的用户创建。同一台计算机上的其他用户都缺少此注册表。

从这个结论我认为HKEY_CLASSES_ROOT是每个用户的个人。 保留所有用户的类数据的注册表在哪里?

编辑:这就是我为本地机器定义COM注册表的方法:

<Class Id="{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}" Context="InprocServer32" Description="AdminAddins.MyClass" ThreadingModel="both" ForeignServer="mscoree.dll">
        <ProgId Id="AdminAddins.MyClass" Description="AdminAddins.MyClass" />
</Class>  

<File Id="fil08256E64C10A4B2F5423A768ECB9A473" Name="AdminAddins.dll" KeyPath="yes" Source="..\AdminAddins\bin\Release\AdminAddins.dll" />

<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32\1.0.5300.19297" Name="Class" Value="AdminAddins.MyClass" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32\1.0.5300.19297" Name="Assembly" Value="AdminAddins, Version=1.0.5300.19297, Culture=neutral, PublicKeyToken=null" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32\1.0.5300.19297" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32\1.0.5300.19297" Name="CodeBase" Value="file:///[#fil08256E64C10A4B2F5423A768ECB9A473]" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32" Name="Class" Value="AdminAddins.MyClass" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32" Name="Assembly" Value="AdminAddins, Version=1.0.5300.19297, Culture=neutral, PublicKeyToken=null" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
<RegistryValue Root="HKLM" Key="SOFTWARE\Classes\CLSID\{1AF5E2B9-CC02-368F-A879-1DF3F538D71A}\InprocServer32" Name="CodeBase" Value="file:///[#fil08256E64C10A4B2F5423A768ECB9A473]" Type="string" Action="write" />

1 个答案:

答案 0 :(得分:1)

来自MSDN

  

类注册和文件扩展名信息存储在HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER键下。 HKEY_LOCAL_MACHINE \ Software \ Classes键包含可应用于本地计算机上所有用户的默认设置。

     

HKEY_CURRENT_USER \ Software \ Classes键包含仅适用于交互式用户的设置。 HKEY_CLASSES_ROOT键提供了合并来自这两个源的信息的注册表视图。 HKEY_CLASSES_ROOT还为为以前版本的Windows设计的应用程序提供此合并视图。

这看起来也很有用:

  

要更改默认设置,请将更改存储在HKEY_LOCAL_MACHINE \ Software \ Classes下。如果您将密钥写入HKEY_CLASSES_ROOT下的密钥,系统会将信息存储在HKEY_LOCAL_MACHINE \ Software \ Classes下。如果您在HKEY_CLASSES_ROOT下为键写入值,并且该键已存在于HKEY_CURRENT_USER \ Software \ Classes下,则系统将在那里存储信息,而不是在HKEY_LOCAL_MACHINE \ Software \ Classes下。