Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 假设注册表配置单元总是相同的安全性如何?_C#_.net_Windows_Registry - Fatal编程技术网

C# 假设注册表配置单元总是相同的安全性如何?

C# 假设注册表配置单元总是相同的安全性如何?,c#,.net,windows,registry,C#,.net,Windows,Registry,我正在编写一个控制台应用程序,允许您与注册表交互。应用程序以字符串path被设置为空开始。当用户键入ls时,我希望它列出所有注册表配置单元(因为它们当前位于本地计算机的顶层)。然而,经过一些广泛的研究,我无法找到一种方法来获取当前机器上的所有注册表配置单元。假设这些蜂箱永远在那里有多安全 HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG 如果认为它们总是存在是不安全的,我如

我正在编写一个控制台应用程序,允许您与注册表交互。应用程序以字符串
path
被设置为空开始。当用户键入
ls
时,我希望它列出所有注册表配置单元(因为它们当前位于本地计算机的顶层)。然而,经过一些广泛的研究,我无法找到一种方法来获取当前机器上的所有注册表配置单元。假设这些蜂箱永远在那里有多安全

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
如果认为它们总是存在是不安全的,我如何动态地获取它们

(如果“配置单元”不是根级别子项的正确术语,那么很抱歉,我对处理注册表非常陌生)

已记录了“标准配置单元”,因此它们不会更改

要打开密钥,应用程序必须为中的另一个密钥提供句柄 已打开的注册表。系统定义预定义的键 这些都是开放的。预定义的键有助于应用程序在中导航 注册中心,使开发允许系统运行的工具成为可能 管理员操作数据类别。添加 向登记处提供的数据应始终在 预定义的键,以便管理工具可以查找和使用新的 数据

应用程序可以使用这些键的句柄作为注册表的入口点。这些句柄对于注册表的所有实现都有效,尽管句柄的使用可能因平台而异

HKEY_CLASSES_ROOT
不是配置单元,它是其他配置单元的视图,而是一个始终打开的预定义键

请参阅上面@Eser的评论,它们也位于
Microsoft.Win32.RegistryHive
枚举中


谢谢,但是有没有一种方法可以在代码中检测出蜂巢,因为我的蜂巢略有不同,这让我觉得其他人的蜂巢也可能不同?(我有
HKEY_CLASSES_ROOT
,这不是标准文档。)我更新了我的答案
HKEY\U CLASSES\U ROOT
不是配置单元,它是其他配置单元组合的视图。话虽如此,它作为一个始终打开的预定义键列在第二个链接中。因此,
HKEY_CLASSES\u ROOT
中的所有内容都是指向其他配置单元中其他位置的快捷方式?正确。HKEY_CLASSES_根键提供注册表视图,该视图合并了来自这两个源的信息。HKEY_CLASSES_ROOT还为为以前版本的Windows设计的应用程序提供此合并视图。如何访问Microsoft.Win32.RegistryHive?由于它们是在Microsoft.Win32.RegistryHive枚举中硬编码的,因此我可以假定它们将始终存在。。。