C#.NET如何判斷注冊表項或鍵、鍵值是否存在
2026-04-25 18:45:28
供稿:網友
今天小編繼續給大家介紹關于C#.NET編程相關的內容,還是那句話,如果你對編程不感興趣,可直接忽略本文或查看本站提供的其他計算機方面的教程,OK,昨天給大家介紹了C#操作注冊表的相關內容,包括創建、修改、刪除注冊表的項和鍵值,但是在操作的過程中,有時候我們需要先判斷注冊表里的項或鍵、鍵值是否存在,然后才能進行下一步的操作,那么C#.NET是如何判斷注冊表里的項或鍵、鍵值是否存在的呢?
注冊表結構:根支、項/子項、鍵、鍵值。
引用命名空間:using Microsoft.Win32;
C#如何判斷注冊表里的項或鍵是否存在
以注冊表里的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion為例,我們判斷一下在CurrentVersion下是否存在Drivers32項以及在CurrentVersion下是否存在SystemRoot鍵。
首先判斷是否存在注冊表項CurrentVersion:
RegistryKey subKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
string[] keyNames = subKey.GetSubKeyNames();
subKey.Close();
bool result = false;
foreach (string keyName in keyNames)
{
if (keyName == "Drivers32")
{
result = true;
break;
}
else
{
result = false;
}
}
if (result == true)
{
MessageBox.Show("注冊表項存在!");
}
else
{
MessageBox.Show("注冊表項不存在!");
}
其次判斷一下注冊表中是否存在該鍵SystemRoot:
RegistryKey subKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
string[] keyValueNames = subKey.GetValueNames();
subKey.Close();
bool result = false;
foreach (string keyValueName in keyValueNames)
{
if (keyValueName == "SystemRoot")
{
result = true;
break;
}
else
{
result = false;
}
}
if (result == true)
{
MessageBox.Show("注冊表鍵存在!");
}
else
{
MessageBox.Show("注冊表鍵不存在!");
}
C#如何判斷注冊表里的鍵值是否存在
以下例子為判斷SystemRoot鍵是否存在鍵值:
Object obj = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion","SystemRoot",null);
if (obj != null)
{
MessageBox.Show("注冊表鍵值存在!");
}
else
{
MessageBox.Show("注冊表鍵值不存在!");
}