如何在.NET(C#)中终止特定用户的进程?我使用多用户WindowsServer,而rdpclip错误每天都让我们害怕。我们通常只是打开任务管理器并杀死然后重新启动rdpclip,但这很麻烦。我写了一个powershell脚本来杀死然后重新启动rdpclip,但没有人使用它,因为它是一个脚本(更不用说执行策略是仅限盒子的)。我正在尝试编写一个快速而肮脏的Windows应用程序,您可以在其中单击一个按钮来终止rdpclip并重新启动它。但是我想将它限制为当前用户,并且找不到Process类的方法来执行此操作。这是我到目前为止所拥有的:Process[]processlist=Process.GetProcesses();foreach(处理进程列表中的进程){if(theprocess.ProcessName=="rdpclip"){theprocess.Kill();过程。开始(“rdpclip”);我不确定,但我认为这会杀死所有rdpclip进程。我想按用户选择,比如我的powershell脚本:taskkill/fi"usernameeq$env:username"/imrdpclip.exe&rdpclip.ex我想我可以从我的可执行文件中调用powershell脚本,但这看起来很糟糕。对于任何格式问题提前道歉,这是我第一次来这里。更新:我还需要知道如何获取当前用户并仅选择那些进程。下面提出的WMI解决方案对我没有帮助。UPDATE2:好的,我已经弄清楚如何获取当前用户,但它与远程桌面上的进程用户不匹配。有人知道如何获取用户名而不是SID吗?干杯,fr0man好的,这就是我最终做的事情:Process[]processlist=Process.GetProcesses();布尔rdpclipFound=假;foreach(处理进程列表中的进程){StringProcessUserSID=GetProcessInfoByPID(theprocess.Id);StringCurrentUser=WindowsIdentity.GetCurrent().Name.Replace("SERVERNAME\","");如果(theprocess.ProcessName=="rdpclip"&&ProcessUserSID==CurrentUser){theprocess.Kill();rdpclipFound=真;}}处理.Start("rdpclip");if(rdpclipFound){MessageBox.Show("rdpclip.exe成功重启");}else{MessageBox.Show("rdpclip未在您的用户名下运行,已启动,请重新尝试复制粘贴。");我只是从StartInfo.EnvironmentVariables获取数据,而不是使用GetProcessInfoByPID。使用System.Collections.Generic;使用系统文本;使用系统诊断;使用System.Security.Principal;使用System.Runtime.InteropServices;namespaceKillRDPClip{classProgram{staticvoidMain(string[]args){Process[]processlist=Process.GetProcesses();foreach(Processtheprocessinprocesslist){StringProcessUserSID=theprocess.StartInfo.EnvironmentVariables["USERNAME"];StringCurrentUser=Environment.UserName;if(process.ProcessName.ToLower().ToString()=="rdpclip"&&ProcessUserSID==CurrentUser){theprocess.Kill();}}}}}阅读下面的CodeProject文章,它有你需要的所有信息:上面的HowtogetprocessownerIDandcurrentuserSID那是C#学习教程:Howdoyoukillaspecificuser'sprocessin.NET(C#)?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
