如何:从 Windows 注册表中读取数据
更新:2007 年 11 月
下面的代码示例使用 CurrentUser 项从 Windows 注册表中读取数据。首先,使用 GetSubKeyNames 方法枚举子项,然后使用 OpenSubKey 方法打开标识子项。与根项一样,每个子项由 RegistryKey 类来表示。最后,使用新的 RegistryKey 对象来枚举项/值对。
示例
代码
// registry_read.cpp
// compile with: /clr
using namespace System;
using namespace Microsoft::Win32;
int main( )
{
array<String^>^ key = Registry::CurrentUser->GetSubKeyNames( );
Console::WriteLine("Subkeys within CurrentUser root key:");
for (int i=0; i<key->Length; i++)
{
Console::WriteLine(" {0}", key[i]);
}
Console::WriteLine("Opening subkey 'Identities'...");
RegistryKey^ rk = nullptr;
rk = Registry::CurrentUser->OpenSubKey("Identities");
if (rk==nullptr)
{
Console::WriteLine("Registry key not found - aborting");
return -1;
}
Console::WriteLine("Key/value pairs within 'Identities' key:");
array<String^>^ name = rk->GetValueNames( );
for (int i=0; i<name->Length; i++)
{
String^ value = rk->GetValue(name[i])->ToString();
Console::WriteLine(" {0} = {1}", name[i], value);
}
return 0;
}
备注
Registry 类仅仅是 RegistryKey 的静态实例的一个容器。每个实例表示一个根注册表节点。这些实例为 ClassesRoot、CurrentConfig、CurrentUser、LocalMachine 和 Users。
除了为静态实例之外,Registry 类中的对象为只读对象。而且,为了访问注册表对象的内容而创建的 RegistryKey 类的实例也是只读实例。有关如何重写此行为的示例,请参见 如何:将数据写入 Windows 注册表。
Registry 类中有两个附加对象:DynData 和 PerformanceData。这两个对象都是 RegistryKey 类的实例。DynData 对象包含动态注册表信息,这些信息仅在 Windows 98 和 Windows Me 中受支持。PerformanceData 对象可用于访问使用 Windows 性能监视系统的应用程序的性能计数器信息。PerformanceData 节点表示的信息实际上并不存储于注册表中,因此不能使用 Regedit.exe 进行查看。