Show / Hide Table of Contents

MSDN.WhiteKnight - Stack Overflow answers

Ответ на "Убить процесс, название которого неизвестно?"

Answer 934639

Link

Многие программы имеют сохраненное в ресурсах внутреннее имя, можно искать по нему.

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.

Back to top Stack Overflow answers (published from sources in GitHub repository). Copyright (c) 2020, MSDN.WhiteKnight. Content licensed under BSD 3-Clause License.
Generated by DocFX