Esempio n. 1
0
 /// <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);
 }
Esempio n. 2
0
 /// <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);
 }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
 /// <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);
 }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
 /// <summary>
 /// 构造进程限制状态。
 /// </summary>
 /// <param name="taskName">
 /// 进程名称。
 /// </param>
 /// <param name="taskType">
 /// 进程限制策略。
 /// </param>
 public TaskStatus(string taskName, TASK_TYPE_FLAGS taskType)
 {
     TaskName = taskName;
     TaskType = taskType;
 }