/// <summary> /// 删除进程信息。 /// </summary> /// <param name="task"> /// 进程信息。 /// </param> /// <param name="taskType"> /// 进程信息类型。 /// </param> public void DelTask(string task, TASK_TYPE_FLAGS taskType) { if (AddList.Any(tmp => string.Equals(tmp, task, StringComparison.CurrentCultureIgnoreCase))) { AddList.Remove(task); } DelList.AddLast(task); }
/// <summary> /// 获取进程信息。 /// </summary> /// <param name="taskType"> /// 进程信息类型。 /// </param> /// <returns> /// 相应类型的进程信息注册表信息。 /// </returns> public static string[] GetTaskList(TASK_TYPE_FLAGS taskType) { if (taskType == TASK_TYPE_FLAGS.RESTRICT_TASK_NAME) { return(RestrictTaskNames); } if (taskType == TASK_TYPE_FLAGS.DISALLOW_TASK_NAME) { return(DisallowTaskNames); } return(taskType == TASK_TYPE_FLAGS.RESTRICT_TASK_PATH ? RestrictTaskPaths : DisallowTaskPaths); }
/// <summary> /// 初始化进程信息。 /// </summary> /// <param name="taskType"> /// 进程信息类型。 /// </param> /// <returns> /// 进程信息注册表信息。 /// </returns> private static string[] InitTask(TASK_TYPE_FLAGS taskType) { var path = GetRegPath(taskType); string[] regkeys; var list = new ArrayList(); try { if ((int)taskType >> 1 > 0) { var regs = RegCtrl.RegEnumKey(path); foreach (var reg in regs) { var tmp = RegCtrl.RegGetValue(new RegPath(reg.HKey, reg.LpSubKey, @"ItemData")); var str = tmp.LpValue.ToString(); if (tmp.LpKind == RegistryValueKind.ExpandString) { str = RegCtrl.RegGetValue(new RegPath(str, true)).LpValue.ToString(); } list.Add(str); } } else { var regs = RegCtrl.RegEnumValue(path); foreach (var reg in regs) { list.Add(reg.LpValue.ToString()); } } } catch (Exception e) { if (e.GetType() != typeof(NullReferenceException)) { throw new Exception(nameof(InitTask)); } } finally { list.Sort(); regkeys = list.ToArray() as string[]; } return(regkeys); }
/// <summary> /// 增加进程信息。 /// </summary> /// <param name="task"> /// 进程信息。 /// </param> /// <param name="taskType"> /// 进程信息类型。 /// </param> /// <returns> /// True为添加成功。 /// False为添加失败。 /// </returns> public bool AddTask(string task, TASK_TYPE_FLAGS taskType) { if (AddList.Any(tmp => string.Equals(tmp, task, StringComparison.CurrentCultureIgnoreCase))) { return(false); } if (DelList.Any(tmp => string.Equals(tmp, task, StringComparison.CurrentCultureIgnoreCase))) { DelList.Remove(task); return(true); } if (OriginList.Any(tmp => string.Equals(tmp, task, StringComparison.CurrentCultureIgnoreCase))) { return(false); } AddList.AddLast(task); return(true); }
/// <summary> /// 修改进程信息。 /// </summary> /// <param name="frmTask"> /// 需修改的进程信息。 /// </param> /// <param name="nowTask"> /// 修改为的进程信息。 /// </param> /// <param name="taskType"> /// 进程信息类型。 /// </param> /// <returns> /// True为修改成功。 /// False为修改失败。 /// </returns> public bool ModifyTask(string frmTask, string nowTask, TASK_TYPE_FLAGS taskType) { if (AddList.Any(tmp => string.Equals(tmp, nowTask, StringComparison.CurrentCultureIgnoreCase))) { return(false); } if (DelList.Any(tmp => string.Equals(tmp, nowTask, StringComparison.CurrentCultureIgnoreCase))) { DelList.AddLast(frmTask); DelList.Remove(nowTask); return(true); } if (OriginList.Any(tmp => string.Equals(tmp, nowTask, StringComparison.CurrentCultureIgnoreCase))) { return(false); } DelList.AddLast(frmTask); AddList.AddLast(nowTask); return(true); }
/// <summary> /// 获取进程信息注册表路径。 /// </summary> /// <param name="taskType"> /// 进程信息类型。 /// </param> /// <returns> /// 相应类型的进程信息注册表路径。 /// </returns> public static RegPath GetRegPath(TASK_TYPE_FLAGS taskType) { RegPath path; if (taskType == TASK_TYPE_FLAGS.RESTRICT_TASK_NAME) { path = new RegPath(REG_ROOT_KEY.HKEY_CURRENT_USER, @"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun"); } else if (taskType == TASK_TYPE_FLAGS.DISALLOW_TASK_NAME) { path = new RegPath(REG_ROOT_KEY.HKEY_CURRENT_USER, @"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun"); } else if (taskType == TASK_TYPE_FLAGS.RESTRICT_TASK_PATH) { path = new RegPath(REG_ROOT_KEY.HKEY_LOCAL_MACHINE, @"SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers\262144\Paths"); } else { path = new RegPath(REG_ROOT_KEY.HKEY_LOCAL_MACHINE, @"SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers\0\Paths"); } return(path); }
/// <summary> /// 构造进程限制状态。 /// </summary> /// <param name="taskName"> /// 进程名称。 /// </param> /// <param name="taskType"> /// 进程限制策略。 /// </param> public TaskStatus(string taskName, TASK_TYPE_FLAGS taskType) { TaskName = taskName; TaskType = taskType; }