MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Убить процесс, название которого неизвестно?"
Answer 934639
Многие программы имеют сохраненное в ресурсах внутреннее имя, можно искать по нему.
static bool ProcessCompareInternalName(Process p,string match) { try { string internalname = p.MainModule.FileVersionInfo.InternalName; if (internalname.ToLower() == match.ToLower()) return true; else return false; } catch (System.ComponentModel.Win32Exception) { return false; } } static void Main(string[] args) { var allproc = Process.GetProcesses(); foreach (Process p in allproc) { if (ProcessCompareInternalName(p, "program.exe")) { p.Kill(); } } }
Если у программы нет ресурсов с информацией о версии, ничего не остается, кроме как сравнивать по бинарным сигнатурам или считать что-то типа CRC32 (Windows позволяет открыть на чтение exe-файлы запущенных процессов, так что это вполне можно реализовать).
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.