我想在所有用户登录中为kill微粒exe创建一个小应用程序。
我有一台服务器,我们创建了一个本地域,我创建了超过100个用户,并且所有用户都登录了域用户。 (domain)\userid : xyz\josep
现在我的意思是我要从所有用户任务管理器中杀死eg.paint.exe。
如何在c#中实现我不知道如何开始工作。
Process proc = Process.GetProcessesByName("paint");//?? How get process from another user?
proc.Kill();
Hellp先生, 我的阙不是重复的。对不起,我不是正确的解释问题。我想杀死所有员工的机器上的特定exe。那么怎么做呢这个kill进程方法用于自己的机器,但我想杀死用户的机器exe
答案 0 :(得分:1)
您需要使用Process.Kill(),例如:
try
{
Process proc = Process.GetProcessesByName("paint");
proc.Kill();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
答案 1 :(得分:0)
好的,这里有一个如何做到这一点的大纲:
您需要service application来完成实际工作,即杀死在本地计算机上运行目标可执行文件的所有进程。一旦完成,服务应该停止。如果失败,服务应该以错误代码停止。
从您的应用程序中,将服务应用程序复制到目标计算机。
使用CreateService及相关功能安装服务。请注意,OpenSCManager function允许您指定远程计算机。
使用StartService及相关功能启动服务。请注意,StartService允许您将参数传递给服务,例如,要目标的可执行文件的名称。
您可以使用QueryServiceStatus进行轮询,直到服务停止,并检索错误代码。或者您可以在应用程序和服务之间使用一些合适的IPC选择。
完成目标计算机上的作业后,可以使用DeleteService卸载服务,然后删除目标计算机上的服务应用程序副本。
一些注意事项:
如果您愿意,可以使用.NET方法代替Win32 API函数。我知道你可以用.NET编写一个服务应用程序,虽然我自己从来没有这样做过。
对于奖励积分,服务应用程序和主应用程序可以包含在同一个可执行文件中,或者服务应用程序可执行文件可以作为资源存储在主应用程序可执行文件中。我不确定这在.NET中是否合理。
显然,运行主应用程序的用户必须是目标计算机上的管理员,并且必须将目标计算机防火墙配置为允许连接。 (我不确定需要在防火墙上确切地启用哪些例外,但至少应该是文件共享例外。)
这一切都假设您无法提前在目标计算机上安装服务。如果可以,这会使事情变得更简单。这也意味着运行主应用程序的用户不一定需要是管理员,并且您可以选择侦听您选择的TCP / IP端口,并仅为该特定端口创建防火墙例外。