レジストリ値がC#コードによって存在するかどうかを確認する方法は?これは私のコードです。「開始」が存在するかどうかを確認したいと思います。
public static bool checkMachineType()
{
RegistryKey winLogonKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\services\pcmcia", true);
string currentKey= winLogonKey.GetValue("Start").ToString();
if (currentKey == "0")
return (false);
return (true);
}
レジストリキーの場合、取得後にnullかどうかを確認できます。存在しない場合は、存在します。
レジストリ値については、現在のキーの値の名前を取得し、この配列に必要な値の名前が含まれているかどうかを確認できます。
例:
public static bool checkMachineType()
{
RegistryKey winLogonKey = Registry.LocalMachine.OpenSubKey(@"System\CurrentControlSet\services\pcmcia", true);
return (winLogonKey.GetValueNames().Contains("Start"));
}
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
}
public bool ValueExists(RegistryKey Key, string Value)
{
try
{
return Key.GetValue(Value) != null;
}
catch
{
return false;
}
}
この単純な関数は、値が見つかったがnullでない場合にのみtrueを返し、値が存在するがnullであるか、キーに値が存在しない場合にfalseを返します。
質問の用途:
if (ValueExists(winLogonKey, "Start")
{
// The values exists
}
else
{
// The values does not exists
}