【问题标题】:How to kill process of another user?如何杀死另一个用户的进程?
【发布时间】:2015-05-23 09:34:28
【问题描述】:

我想为所有用户登录中的杀戮微粒exe创建一个小应用程序。

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

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

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

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

求救,先生, 我的 que 不是重复的。抱歉,我没有正确解释问题。我想杀死所有员工机器的特定 exe。那么怎么能做到这一点。这个kill process方法用于自己的机器,但我想杀死用户的机器exe

【问题讨论】:

  • 您问题中的代码不起作用的唯一原因可能是您不记得以管理员身份运行它。
  • 求助,先生,我的 que 不是重复的。抱歉,我没有正确解释问题。我想杀死所有员工机器的特定 exe。那么怎么能做到这一点。这个kill process方法用于自己的机器,但我想杀死用户的机器exe。
  • 这很难做到,但是有一个现成的工具,pskill.exe,可以从微软的网站下载。
  • 感谢@Harry 的建议,但我们的客户需要为此提供帮助。

标签: c# windows process kill


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    好的,以下是如何执行此操作的概要:

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

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

    • 使用CreateService 和相关函数安装服务。请注意,OpenSCManager function 允许您指定远程计算机。

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

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

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

    一些注意事项:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多