我有一个程序可以像这样检索应用程序列表
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 获取所有应用程序进程,而不必运行每个程序来获取它们。
答案 0 :(得分:1)
上面的代码将为您提供显示在控制面板的“程序和功能”列表中的应用程序的名称。如果您查询同一键的 UninstallString
值,您将获得卸载该应用程序的命令。但是从这些名称到构成给定应用程序的可执行文件没有链接(这也可以是多个)。
注册表中的此列表不适合您的目的。您可以改为检查正在运行的进程,或者列出开始菜单的条目,或者改为检查自动启动条目 - 列举一些更好的选项。
答案 1 :(得分:1)
如果您的任务是终止或退出具有特定名称的所有正在运行的进程,您可能只需调用 GetProcessByName(string processName) 来获取与该名称匹配的所有进程实例。如果您得到一个非空的实例数组,请对每个实例调用 Close() 或 Kill()。