Как проверить, существует ли параметр реестра с помощью C#?
Как проверить, существует ли значение реестра с помощью кода C#? Это мой код, я хочу проверить, существует ли 'Start'.
public static bool checkMachineType()
{
RegistryKey winLogonKey = Registry.LocalMachine.OpenSubKey(@"SystemCurrentControlSetservicespcmcia", true);
string currentKey= winLogonKey.GetValue("Start").ToString();
if (currentKey == "0")
return (false);
return (true);
}
6 ответов:
для раздела реестра вы можете проверить, если он равен null после его получения. Так и будет, если его не существует.
для параметра реестра вы можете получить имена значений для текущего ключа и проверить, содержит ли этот массив необходимое имя значения.
public static bool RegistryValueExists(string hive_HKLM_or_HKCU, string registryRoot, string valueName) { RegistryKey root; switch (hive_HKLM_or_HKCU.ToUpper()) { case "HKLM": root = Registry.LocalMachine.OpenSubKey(registryRoot, false); break; case "HKCU": root = Registry.CurrentUser.OpenSubKey(registryRoot, false); break; default: throw new System.InvalidOperationException("parameter registryRoot must be either \"HKLM\" or \"HKCU\""); } return root.GetValue(valueName) != null; }
string keyName=@"HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\pcmcia"; string valueName="Start"; if (Registry.GetValue(keyName, valueName, null) == null) { //code if key Not Exist } else { //code if key Exist }
RegistryKey rkSubKey = Registry.CurrentUser.OpenSubKey(" Your Registry Key Location", false); if (rkSubKey == null) { // It doesn't exist } else { // It exists and do something if you want to }
RegistryKey test9999 = Registry.CurrentUser; foreach (var item in test9999.GetSubKeyNames()) { if (item.ToString() == "SOFTWARE") { test9999.OpenSubKey(item); foreach (var val in test9999.OpenSubKey(item).GetSubKeyNames()) { if(val.ToString() == "Adobe") { Console.WriteLine(val+ " found it "); } } } }
internal static Func<string, string, bool> regKey = delegate (string KeyLocation, string Value) { // get registry key with Microsoft.Win32.Registrys RegistryKey rk = (RegistryKey)Registry.GetValue(KeyLocation, Value, null); // KeyLocation and Value variables from method, null object because no default value is present. Must be casted to RegistryKey because method returns object. if ((rk) == null) // if the RegistryKey is null which means it does not exist { // the key does not exist return false; // return false because it does not exist } // the registry key does exist return true; // return true because it does exist };
использование:
// usage: /* Create Key - while (loading) { RegistryKey k; k = Registry.CurrentUser.CreateSubKey("stuff"); k.SetValue("value", "value"); Thread.Sleep(int.MaxValue); }; // no need to k.close because exiting control */ if (regKey(@"HKEY_CURRENT_USER\stuff ... ", "value")) { // key exists return; } // key does not exist