/// <summary> /// Do the actual effect at the system /// </summary> public bool DoToggle() { try { using (RegistryKey key = RegistrySet.OpenSubKey(RegKey, true)) { if (key != null) { if (Active) { if (UncheckValue == null) { if (key.GetValue(Value) != null) { key.DeleteValue(Value); } } else if (UncheckValue.GetType() == typeof(int)) { key.SetValue(Value, UncheckValue, ValueKind); } } else { if (CheckValue == null) { if (key.GetValue(Value) != null) { key.DeleteValue(Value); } } else if (CheckValue.GetType() == typeof(int)) { key.SetValue(Value, CheckValue, ValueKind); } } } else if (key == null) { if (Active) { if (UncheckValue.GetType() == typeof(int)) { Registry.SetValue(RegistrySet + "\\" + RegKey, Value, UncheckValue, ValueKind); } } else { if (CheckValue.GetType() == typeof(int)) { Registry.SetValue(RegistrySet + "\\" + RegKey, Value, CheckValue, ValueKind); //key.SetValue(Value, CheckValue, ValueKind); } } } } if (RestartExplorer) { foreach (Process p in Process.GetProcesses()) { try // In case we get Access Denied { if (p.ProcessName == "explorer") { p.Kill(); break; } } catch { } } Process.Start("explorer.exe"); } return(true); //Success } catch (Exception) { return(false); //Some exception error... } }