在操作登錄表前,常需先檢查特定子項或鍵值是否存在,以避免例外或覆寫錯誤資料。本文提供兩個實用方法。
透過 RegistryKey.GetSubKeyNames() 取得所有子項名稱陣列,逐一比對。
private bool IsRegeditItemExist()
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE");
subkeyNames = software.GetSubKeyNames();
foreach (string keyName in subkeyNames)
{
if (keyName == "test")
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
開啟指定子項(此處為 SOFTWARE\\test),取得 GetValueNames() 比對鍵值名稱。
private bool IsRegeditKeyExit()
{
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test");
subkeyNames = software.GetValueNames();
foreach (string keyName in subkeyNames)
{
if (keyName == "test")
{
hkml.Close();
return true;
}
}
hkml.Close();
return false;
}
Close() 釋放資源。OpenSubKey 第二參數需傳 true。HKEY_LOCAL_MACHINE 分支下測試,實際部署請注意權限(需管理員權限)。至此,C# 操作登錄表的核心功能(建立/開啟/刪除子項、建立/讀取/刪除鍵值、存在性判斷)已完整介紹。掌握這些基礎,即可應對大多數登錄表應用場景。