如何杀死另一个用户的进程?

How to kill process of another user?

我想为所有用户登录的 kill particular exe 创建一个小应用程序。

我有一台服务器,我们正在创建一个本地域,我创建了 100 多个用户,并且所有用户都使用域用户登录。 (domain)\userid : xyz\josep

现在我的意思是我想从所有用户任务管理器中终止 eg.paint.exe。

如何在 c# 中实现我不知道如何开始工作。

Process proc = Process.GetProcessesByName("paint");//?? How get process from another user?
proc.Kill();

先生,您好, 我的问题不是重复的。抱歉,我没有正确解释问题。我想杀死所有员工机器的特定 exe。所以怎么能做到这一点。这种杀死进程的方法用于自己的机器,但我想杀死用户的机器 exe

您需要使用 Process.Kill(),例如:

try
{
      Process proc = Process.GetProcessesByName("paint");
      proc.Kill();
}
catch (Exception ex)
{
      MessageBox.Show(ex.Message.ToString()); 
}

好的,下面是如何执行此操作的概述:

  • 您需要一个 service application 来完成实际工作,即杀死所有进程 运行 本地计算机上的目标可执行文件。一旦完成,服务应该停止。如果失败,服务应停止并显示错误代码。

  • 从您的应用程序中,将服务应用程序复制到目标计算机。

  • 使用CreateService and related functions. Note that the OpenSCManager function安装服务允许您指定远程机器。

  • 使用 StartService 和相关功能启动服务。请注意,StartService 允许您将参数传递给服务,例如,目标可执行文件的名称。

  • 您可以使用 QueryServiceStatus 轮询直到服务停止,并检索错误代码。或者您可以在您的应用程序和服务之间使用一些合适的 IPC 选择。

  • 目标机器上的作业完成后,您可以使用DeleteService卸载服务,然后删除目标机器上服务应用程序的副本。

一些注意事项:

  • 如果您愿意,大概可以使用 .NET 方法代替 Win32 API 函数。我知道您可以在 .NET 中编写服务应用程序,但我自己从未这样做过。

  • 为了加分,服务应用程序和主应用程序可以包含在同一个可执行文件中,或者服务应用程序可执行文件可以作为资源存储在主应用程序可执行文件中。不过,我不确定这在 .NET 中是否合理。

  • 显然,主应用程序的用户运行必须是目标机器上的管理员,并且目标机器的防火墙必须配置为允许连接。 (我不确定需要在防火墙上启用哪些例外,但至少是文件共享例外。)

  • 这一切都假设您无法提前在目标机器上安装该服务。如果可以的话,这会让事情变得简单一些。这也意味着用户 运行 主应用程序不一定需要是管理员,并且让您可以选择侦听您选择的 TCP/IP 端口并且只为该特定端口创建防火墙例外端口.