예제 #1
0
        static List <AutorunProgram> CurrentUser(AddMask collectMask)
        {
            List <AutorunProgram> tmp_list = new List <AutorunProgram>();

            RegistryKey regKey = Registry.CurrentUser.OpenSubKey(keyPath);

            foreach (string oneProgram in regKey.GetValueNames())
            {
                AutorunProgram temp = new AutorunProgram();
                temp.RegName  = oneProgram;
                temp.RegValue = regKey.GetValue(oneProgram).ToString();

                string[] RegValueParsed = ParseRegValue(temp.RegValue);
                temp.RunFilePath  = RegValueParsed[0];
                temp.RunArguments = RegValueParsed[1];

                temp.IsFileExists = File.Exists(temp.RunFilePath);
                //temp.IsActiveProcess = cProcesses.IsFileActiveProcess(temp.RunFilePath);
                temp.RegLocation = AutorunProgram.RegistryLocation.CurrentUser;

                // Проверяем AddMask, если хоть одно условие будет выполнено,
                // то текущий элемент не будет добавлен в List и будет продолжен перебор остальных элементов
                if (!CanBeAdded(temp, collectMask))
                {
                    continue;
                }

                // Если дошли до сюда, то добавляем в List
                tmp_list.Add(temp);
            }
            return(tmp_list);
        }
예제 #2
0
        static bool CanBeAdded(AutorunProgram autorunProgram, AddMask collectMask)
        {
            switch (collectMask)
            {
            case AddMask.NoAddActiveProcess:

                // Если процесс запущен - нельзя
                if (autorunProgram.IsActiveProcess)
                {
                    return(false);
                }

                break;

            case AddMask.NoAddEmptyPath:

                // Если оригинального файла нет - нельзя
                if (!autorunProgram.IsFileExists)
                {
                    return(false);
                }

                break;

            case AddMask.NoAddEmptyPathOrActiveProcess:

                // Если оригинального файла нет или процесс запущен - нельзя
                if (!autorunProgram.IsFileExists | autorunProgram.IsActiveProcess)
                {
                    return(false);
                }

                break;
            }

            return(true);
        }
예제 #3
0
 /// <summary>
 /// Получить список программ добавленных в автозагрузку (Только LocalMachine и CurrentUser)
 /// </summary>
 /// <param name="receiver"></param>
 /// <param name="collectMask"></param>
 public static void GetAutoruns(List <AutorunProgram> receiver, AddMask collectMask = AddMask.CollectAll)
 {
     // Добавляем в receiver(autorunPrograms) значения из листов LocalMachine и CurrentUser
     receiver.AddRange(AutorunElements(AutorunProgram.RegistryLocation.LocalMachine, collectMask));
     receiver.AddRange(AutorunElements(AutorunProgram.RegistryLocation.CurrentUser, collectMask));
 }