如何使用应用程序名称而不是进程名称杀死应用程序

时间:2021-07-11 17:30:43

标签: c# windows visual-studio kill

我有一个程序可以像这样检索应用程序列表

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

            int id = -1;

            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
            {
                foreach (string subkey_name in key.GetSubKeyNames())
                {
                    using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                    {
                        subkey.GetValue("DisplayName"))

上面的代码将返回应用程序的名称,例如谷歌会给我一个“谷歌浏览器”而不是“chrome.exe”的输出我把它们放到一个列表中,并提供了勾选它们以退出的选项启动。我找不到一种方法来杀死输出为“Google Chrome”的应用程序,或者找到一种方法来从 PC 获取所有应用程序进程,而不必运行每个程序来获取它们。

2 个答案:

答案 0 :(得分:1)

上面的代码将为您提供显示在控制面板的“程序和功能”列表中的应用程序的名称。如果您查询同一键的 UninstallString 值,您将获得卸载该应用程序的命令。但是从这些名称到构成给定应用程序的可执行文件没有链接(这也可以是多个)。

注册表中的此列表不适合您的目的。您可以改为检查正在运行的进程,或者列出开始菜单的条目,或者改为检查自动启动条目 - 列举一些更好的选项。

答案 1 :(得分:1)

如果您的任务是终止或退出具有特定名称的所有正在运行的进程,您可能只需调用 GetProcessByName(string processName) 来获取与该名称匹配的所有进程实例。如果您得到一个非空的实例数组,请对每个实例调用 Close()Kill()

相关问题