/// <summary> /// 获取路径下的列表 /// </summary> /// <param name="regPath">注册表路径</param> /// <param name="param">注册表键列表</param> /// <param name="operateObject">注册表根位置</param> /// <returns></returns> public static List <string> GetSubKeyListByCondition(string regPath, List <string> param, OperateObjectType operateObject = OperateObjectType.LocalMachine) { RegistryKey key = null; var list = new List <string>(); try { if (operateObject.ToString().Equals("LocalMachine")) { key = Registry.LocalMachine.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("Users")) { key = Registry.Users.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("CurrentUser")) { key = Registry.CurrentUser.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("Root")) { key = Registry.ClassesRoot.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("CurrentConfig")) { key = Registry.CurrentConfig.OpenSubKey(regPath, true); } if (key == null) { return(null); } foreach (var subKeyName in key.GetSubKeyNames()) { var subKey = key.OpenSubKey(subKeyName); if (subKey == null) { continue; } var stringBuilder = new StringBuilder(); foreach (var item in param) { stringBuilder.Append(subKey.GetValue(item) != null ? subKey.GetValue(item).ToString() : ""); stringBuilder.Append(";"); } if (!string.IsNullOrEmpty(stringBuilder.ToString().TrimEnd(';'))) { list.Add(stringBuilder.ToString().TrimEnd(';')); } } return(list); } finally { if (key != null) { key.Close(); } } }
/// <summary> /// 检查对应的值是否存在 /// </summary> /// <param name="path">注册表路径</param> /// <param name="subKey">注册表子健</param> /// <param name="registryKey">注册表键</param> /// <param name="value">注册表值</param> /// <param name="operateObject">查找注册表的根目录</param> /// <returns></returns> public static bool ExistKey(string path, string subKey, string registryKey, string value = null, OperateObjectType operateObject = OperateObjectType.LocalMachine) { RegistryKey key = null; try { if (operateObject.ToString().Equals("LocalMachine")) { key = Registry.LocalMachine.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Users")) { key = Registry.Users.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentUser")) { key = Registry.CurrentUser.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Root")) { key = Registry.ClassesRoot.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentConfig")) { key = Registry.CurrentConfig.OpenSubKey(path, true); } if (key == null) { return(false); } var subItem = key.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree); if (subItem == null) { return(false); } var keyValue = subItem.GetValue(registryKey); if (value == null) { return(keyValue != null); } return(!(keyValue == null || keyValue.ToString() != value)); } finally { if (key != null) { key.Close(); } } }
/// <summary> /// 添加/修改键值对内容 /// </summary> /// <param name="path">注册表路径</param> /// <param name="subKey">注册表子健</param> /// <param name="registryKey">注册表键</param> /// <param name="value">注册表值</param> /// <param name="operateObject">查找注册表的根目录</param> public static void SaveSubKey(string path, string subKey, string registryKey, object value, OperateObjectType operateObject = OperateObjectType.LocalMachine) { RegistryKey key = null; try { if (operateObject.ToString().Equals("LocalMachine")) { key = Registry.LocalMachine.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Users")) { key = Registry.Users.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentUser")) { key = Registry.CurrentUser.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Root")) { key = Registry.ClassesRoot.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentConfig")) { key = Registry.CurrentConfig.OpenSubKey(path, true); } if (key == null) { return; } var regKey = key.CreateSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree); if (regKey != null) { regKey .SetValue(registryKey, value, RegistryValueKind.DWord); } } finally { if (key != null) { key.Close(); } } }
/// <summary> /// 获取路径下的列表 /// </summary> /// <param name="regPath">注册表路径</param> /// <param name="param">注册表键列表</param> /// <param name="operateObject">注册表根位置</param> /// <returns></returns> public static string GetValueListByCondition(string regPath, string param, OperateObjectType operateObject = OperateObjectType.LocalMachine) { RegistryKey key = null; try { if (operateObject.ToString().Equals("LocalMachine")) { key = Registry.LocalMachine.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("Users")) { key = Registry.Users.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("CurrentUser")) { key = Registry.CurrentUser.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("Root")) { key = Registry.ClassesRoot.OpenSubKey(regPath, true); } else if (operateObject.ToString().Equals("CurrentConfig")) { key = Registry.CurrentConfig.OpenSubKey(regPath, true); } if (key == null) { return(null); } var value = key.GetValue(param); if (value == null) { return(""); } return(value.ToString()); } finally { if (key != null) { key.Close(); } } }
/// <summary> /// 删除键值 /// </summary> /// <param name="path">注册表路径</param> /// <param name="subKey">注册表子健</param> /// <param name="registryKey">注册表键</param> /// <param name="operateObject">查找注册表的根目录</param> public static void DeleteSubKey(string path, string subKey, string registryKey, OperateObjectType operateObject = OperateObjectType.LocalMachine) { RegistryKey key = null; try { if (operateObject.ToString().Equals("LocalMachine")) { key = Registry.LocalMachine.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Users")) { key = Registry.Users.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentUser")) { key = Registry.CurrentUser.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("Root")) { key = Registry.ClassesRoot.OpenSubKey(path, true); } else if (operateObject.ToString().Equals("CurrentConfig")) { key = Registry.CurrentConfig.OpenSubKey(path, true); } if (key == null) { return; } var subItem = key.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree); if (subItem != null) { subItem.DeleteValue(registryKey, false); } } finally { if (key != null) { key.Close(); } } }