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); }
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); }
/// <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)); }