Почему я получаю «Никакой процесс не связан с этим объектом».при вызове process.Close () или process.Kill ()? - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть программа на C #, которая запускает TShark.exe, который является фоновым эквивалентом WireShark.Я хотел бы закрыть все экземпляры, которые я запускаю.Похоже, он просто отлично запускается, работает в фоновом режиме и регистрирует сетевой трафик в файл, как и должен.Однако, когда я пытаюсь закрыть его, я получаю исключение "No process is associated with this object.".

Вот как я запускаю процессы:

ProcessStartInfo processStartInfo = new ProcessStartInfo
{
   Arguments = $"-i {nic} -t ad -w {GenerateLogPath(nic)}",
   FileName = "\"C:\\Program Files\\Wireshark\\tshark.exe\"",
   CreateNoWindow = true,
   WindowStyle = ProcessWindowStyle.Hidden,
   UseShellExecute = false
};

WireSharkProcesses.Add(System.Diagnostics.Process.Start(processStartInfo));

Я пытался закрыть несколько методов/ убить эти процессы.Во-первых, я сохранил список всех процессов, которые я запустил в своем приложении, и безуспешно вызвал для них следующее:

process.CloseWindow();
process.Close();
process.Kill();

Я продолжал получать исключение "No process is associated with this object.".

ИтакЯ использовал:

var processes = System.Diagnostics.Process.GetProcesses();

И получил список всех процессов на моей машине, перебрал их и попытался закрыть тех, чье имя процесса было «tshark» или «dumpcap».Я попытался сделать это с помощью .CloseWindow (), .Close () и .Kill (), которые все потерпели неудачу и выдавали вышеупомянутое исключение.

Я даже вошел в TaskManager и попытался завершить ЗАДАНИЕ на них.Они, казалось, были удалены, но после закрытия и повторного открытия TaskManager, они волшебным образом появились снова.Также теперь есть несколько экземпляров tshark и dumpcap, которые появляются, когда я вызываю GetProcesses (), но отсутствуют в списке процессов, отображаемых диспетчером задач.

Чего мне здесь не хватает ??Если не считать перезагрузки компьютера, как мне заставить эти процессы завершиться?Это просто проблема проволочной акулы или общая проблема с процессами убийства?

1 Ответ

0 голосов
/ 04 декабря 2018

Используете ли вы WinPcap или Npcap ?Если вы используете WinPcap, вы можете попробовать переключиться на Npcap и использовать его вместо этого.См. Комментарий # 32 Джеральда Комба о недавно закрытой ошибке Wireshark 14701 .

Кстати, если вы не знали, tshark способензахват более чем одного интерфейса одновременно, поэтому теоретически требуется только один экземпляр.Я понимаю, что иногда это может вызвать проблемы с повторной сборкой, поэтому, если вы пытаетесь избежать этого или просто хотите, чтобы пакеты разделялись интерфейсом, тогда да, вам придется запускать несколько экземпляров.

...