Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2015, 15:27   #1
ZiDoxFix
Пользователь
 
Регистрация: 09.05.2015
Сообщений: 70
По умолчанию Убить неизвестный процесс (Console )

Хай репята)
Пишу в консольке), Мне нужно, чтобы если в процессах появился неизвестный процесс, то убить его
При этом не трогать системные процессы, и вообще ( сделать как нибудь в коде прописать те процессы которые не нужно трогать)
Так вот я обратился к кодеру, но я чет не очень понял, может вы сможете разобрать!
Буду очень благодарен!
вот как он описал:

просто получи списк всех процессов, а потом получай список постоянно, и удаляй из каждого нового списка твой основной самый первый список, а всё что осталось в списке завершай kill()
допустим


string[] protectList = получи список процесов

а потом постоянно в цыкле или на таймер в string[] newProcess получай процесс
потом цыклом
Код:
for(int i = 0; i < protectList.Lenght ( или Count не помню); i++)
{
   тут делай Remove из newProcess удаляй protectList[i]
}
дальше тоже самое цыклом переберай, но теперь вместо удаления process kill

P.s Как правильно его реализовать?

Последний раз редактировалось Stilet; 25.07.2015 в 11:53.
ZiDoxFix вне форума Ответить с цитированием
Старый 22.07.2015, 20:47   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Что значит "неизвестный процесс"?
Я заразил ваш компьютер вирусом, который зарегистрировал виндовую службу, запускающую раз в минуту вредоносный код.
Вы понимаете что в таком случае ваша программа будет выполнять сизифов труд?

Если вы хотите убивать неизвестные процессы постоянно, почему вы не хотите реализовать это виндовой службой? Она работает в фоновом режиме и вы гарантированно не закроете ее окно.
Что будет, если вы случайно закроете в процессе работы вашу программу со стартовым списком процессов? Правильно, он потеряется. Значит его нужно где-то хранить. Так не проще ли в этом случае написать скрипт на PowerShell, указать файл в котором хранятся называния "правильных процессов" и который запускается таск менеджером раз в минуту, да хоть каждые 10 секунд и вы скриптом прибиваете все процессы не из этого списка.

А в целом - прибитие процесса странный способ работы. Правильный подход - правильно настроенные службы, нет левых приложений в автозагрузке и вы не ставите всякий бесплатный бред, который устанавливает десяток других приложений.

Да и прибить вы можете только запущенные процессы, значит код выполняется, значит вы уже опоздали с прибитием
Akeloya вне форума Ответить с цитированием
Старый 22.07.2015, 21:14   #3
ZiDoxFix
Пользователь
 
Регистрация: 09.05.2015
Сообщений: 70
По умолчанию

Что за бред ты тут написал, раз уже не понял не пиши! А код я предоставил те кто поймут опишут.
ZiDoxFix вне форума Ответить с цитированием
Старый 25.07.2015, 11:16   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Реализовать - как и описано.
Сначала надо составить белый список процессов и сохранить его.
Затем по таймеру получать список всех процессов и убивать те, которые не состоят в списке белых процессов.
Только вот это глупо, ибо винда при запуске чуть ли не каждого системного окна создает новый процесс - это проблема.
Вместо того чтобы писать багованный костыль - погугли про групповые политики. В винде все давно реализовано.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 25.07.2015, 12:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что за бред ты тут написал
Во-первых это не бред.
Во-вторых проверка процесса в таймере далеко не идеальный способ. Прибитие его тоже может обломаться если прибить твое ПО или настроить политику безопасности, или сделать еще один процесс, который будет следить за своим подопечным и запускать его снова в случае прибивания.
Цитата:
раз уже не понял не пиши!
А ты понял вообще что пишешь?
Цитата:
код я предоставил
Не вижу кода, ну да ладно.
Переходить на личности не буду, это лирика. Отвечу по теме:
Получение списка процессов:
Код:
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcesses();
            string[] prcs=p.Distinct().Select(i=>i.ProcessName).OrderBy(o=>o).ToArray<string>();
Сравнивание и киканье:
Код:
            System.Diagnostics.Process[] q = System.Diagnostics.Process.GetProcesses();
            var lst=q.Where(i => !prcs.Contains(i.ProcessName));
            foreach (System.Diagnostics.Process i in lst) i.Kill();
Это в таймерю
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.07.2015, 22:48   #6
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от ZiDoxFix Посмотреть сообщение
Мне нужно, чтобы если в процессах появился неизвестный процесс, то убить его
При этом не трогать системные процессы, и вообще ( сделать как нибудь в коде прописать те процессы которые не нужно трогать)
Думал только меня посещают такие бредовые идеи. Пару лет назад написал такую программу. Только чуть расширенная версия - новый процесс сразу "замораживается", и запрос юзеру на удаление или разрешить. Ну и ещё постоянно следит за всеми мне известными ключами автозапуска в реестре + изменения файла hosts.
Если надо, то поделюсь.
kvitaliy вне форума Ответить с цитированием
Старый 26.07.2015, 00:29   #7
ZiDoxFix
Пользователь
 
Регистрация: 09.05.2015
Сообщений: 70
По умолчанию

kvitaliy очень интересно кинь )
ZiDoxFix вне форума Ответить с цитированием
Старый 26.07.2015, 09:46   #8
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Программу желательно оставить в своей папке, она пишет лог подробный о работе системы, ведет учет доверенных процессов. Все процессы, которые были в момент запуска программы считаются доверенными.
Естественно, для корректной работы в Win7-8 требует соответствующие права.
Вложения
Тип файла: zip sentinel.zip (105.1 Кб, 12 просмотров)
kvitaliy вне форума Ответить с цитированием
Старый 27.07.2015, 16:10   #9
Masyanya12345
Новичок
Джуниор
 
Аватар для Masyanya12345
 
Регистрация: 27.07.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
Думал только меня посещают такие бредовые идеи. Пару лет назад написал такую программу. Только чуть расширенная версия - новый процесс сразу "замораживается", и запрос юзеру на удаление или разрешить. Ну и ещё постоянно следит за всеми мне известными ключами автозапуска в реестре + изменения файла hosts.
Если надо, то поделюсь.
Ну тогда и меня принимайте в свои ряды))))
Masyanya12345 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
убить процесс Volkogriz Win Api 6 16.02.2012 08:18
Убить процесс. ApolloKid Win Api 4 12.07.2011 01:29
Как убить процесс? Effort Помощь студентам 3 24.06.2011 21:27
Как убить процесс? coolle Помощь студентам 25 02.07.2010 14:19
Как убить процесс(с++) progdev Общие вопросы C/C++ 2 22.11.2009 21:30