有什么像Environment.SpecialFolder但是对于注册表路径

时间:2011-01-04 18:20:06

标签: c# .net registry

我想在注册表中存储一些应用程序信息,我不知道应该在哪里存储它。我希望信息适用于所有用户,因此我不会使用HKEY_CURRENT_USER。也许HKEY_LOCAL_MACHINE然后我不知道在哪里。我不知道有什么标准和Environment.SpecialFolder这样的标准,但对于注册表路径或文件夹来说会更安全,更优雅。

2 个答案:

答案 0 :(得分:7)

检查Microsoft.Win32.Registry对象。在那里,您可以找到一些表示常见注册表路径的对象,例如:

  • CurrentUser
  • LOCALMACHINE
  • ClassesRoot
  • 用户
  • PerformanceData
  • CurrentConfig
  • DynData

例如,如果您想访问HKEY_CURRENT_USER:

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();

答案 1 :(得分:5)

否 - 与文件系统不同,不需要这样的方法,因为注册表在某些地方有一些标准化的位置。

您应该按照以下格式将数据存储在密钥中:

HKEY_HIVE\SOFTWARE\Publisher\Program

例如:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows

如果您需要数据是整个机器的全局数据,请将您的内容放在HKEY_LOCAL_MACHINE内,但请注意,写入此位置将需要管理权限,除非您修改密钥上的DACL以使其行为不同(在某些情况下)安装者的形式或类似的东西)。

如果您要存储每个用户数据(提示 - 大多数数据是每个用户),那么您应该将内容放在HKEY_CURRENT_USER中,这样做的好处就是没有特殊权利该用户需要访问其配置单元(默认情况下)。