Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Убиваение процесса


Автор: EgoBrain 4.11.2008, 15:08
Сразу говорю поиск не помог smile Как в C# получить ID процесса и убить его? И еще вопрос экспронтом: как проверить было ли обращение к файлу?

Автор: Bogdan1024 4.11.2008, 15:41
Следить за обращениями к файлу можно с помощью класса FileSystemWatcher . Если нужно узнать обращались ли к файлу до того как ты заюзал этот класс, то нужно включать слежение за файлом у самой операционки, что тебе вряд ли надо.

Добавлено через 2 минуты и 8 секунд
Про процессы: погугли System.Diagnostics.Process
У него есть метод Kill

Автор: Experimenter 5.11.2008, 18:50
Bogdan1024, насколько помнится, FileSystemWatcher не следит за обращениями к файлу, только создание, удаление, переименование и изменение. Или следит? Есть альтернатива: 
Код

File.GetLastAccessTime(string path);
только сам не юзал никогда, не знаю, насколько она эффективна.

Автор: Bogdan1024 5.11.2008, 19:07
Ааа, точно, именно за обращениями не факт что следит.
Ну тогда можно посмотреть в сторону WMI - оно-то наверняка такой инфой владеет.
А использование Last Access Time можно кстати отключить. Кстати, не помню, оно включено по умолчанию или нет.

Автор: Darisvet 9.11.2008, 16:50
Код

Process[] pList = Process.GetProcesses();

      foreach (Process p in pList)
      {
           if (p.ProcessName == "explorer")
                 p.Kill();
      }



И ещё - в этом один прикол есть - имя обычно задаётся без расширения exe - список процессов выводится в таком вот долбанутом порядке... Но если расширение не ехе - то будет выводиться с расширением, типа LMCGate.run короче если по поиску не идёт сразу - то попробуйте отладочно вывести мессадж бокс со списком всех процессов: string tmp = ""; и в цикле tmp = tmp + p.ProcessName + "\n"; потом в метод MessageBox.Show(tmp); - всё ясно станет... Как раз аналогичной приблудой занимаюсь...

Автор: EgoBrain 10.11.2008, 11:59
Цитата

И ещё - в этом один прикол есть - имя обычно задаётся без расширения exe - список процессов выводится в таком вот долбанутом порядке... Но если расширение не ехе - то будет выводиться с расширением, типа LMCGate.run короче если по поиску не идёт сразу - то попробуйте отладочно вывести мессадж бокс со списком всех процессов: string tmp = ""; и в цикле tmp = tmp + p.ProcessName + "\n"; потом в метод MessageBox.Show(tmp); - всё ясно станет... Как раз аналогичной приблудой занимаюсь...


Спасибо. Process - похоже хороший класс. Как снова перейду к этой задачи обязательно его гляну.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)