如果你曾經使用過RegOpenKeyEx、RegCreateKeyEx、RegCloseKey等Win32 API函數讀寫過注冊編輯表,你肯定非常熟悉這些復雜的Registry函數。相反,在.NET框架中,Registry和RegistryKey類提供了對Windows注冊編輯表的控制,通過這些類你可非常容易地對注冊編輯表進行讀寫。
這些類被定義在Microsoft.Win32命名空間和mscorlib.dll裝配中,使用這些類之前,你必須使用using聲明這些命名空間。
#using
using namespace Microsoft::win32;
Registry類只有七個字段成員,使得你能夠存取注冊編輯表中七個特定的鍵,這同你在注冊編輯表中打開一個鍵非常類似,這些所有的成員均返回一個指向注冊鍵的指針。
ClassesRoot 對應於HKEY_CLASSES_ROOT
CurrentConfig 對應於HKEY_CURRENT_CONFIG
CurrentUser 對應於HKEY_CURRENT_USER
DynData 對應於HKEY_DYN_DATA
LocalMachine 對應於HKEY_LOCAL_MACHINE
PerformanceData 對應於HKEY_PERFORMANCE_DATA
Users 對應於HKEY_USERS
比如你想讀寫HKEY_LOCAL_MACHINE的數據,你可以先獲得一個指向該鍵的指針。
RegistryKey* pRegKey = Registry::LocalMachine;
接著調用RegistryKey的OpenSubKey成員函數,然後再調用GetValue即可獲得一個特定的字符串。
pRegKey->OpenSubKey(L"SOFTWARE//Kruse Inc//Version");
Object *pValue = pRegKey->GetValue(L"kWise");
如果你想設置一個鍵的值,則需要調用它的SetValue函數。
pRegKey->SetValue(L"kWise", "some Value Here");
刪除一個值可以使用:
pRegKey->DeleteValue(L"kWise");
其它常用的成員函數還有:
DeleteSubKey 刪除一個子鍵
CreateSubKey 如果鍵已經存在就打開該鍵,否則就創建新鍵
DeleteSubKeyTree 刪除子鍵及其節點
下面是程序代碼例子(Microsoft Visual c++.net beta2調試通過):
#using
using namespace System;
using namespace Microsoft::Win32;
// 這是應用程序的入口點
int main(void)
{
RegistryKey * pRegKey = Registry::LocalMachine;
pRegKey = pRegKey->OpenSubKey(L"HARDWARE//DESCRIPTION
//System//CentralProcessor//0");
Object *pValue = pRegKey->GetValue(L"VendorIdentifier");
Console::WriteLine(L"本機的CPU為: {0}.", pValue);
return 0;
}