title: How do you kill a process for a particular user in .NET (C#)?
body: <p>I work off of a multi-user Windows Server, and the rdpclip bug bites us all daily.  We usually just open task manager and kill then restart rdpclip, but that's a pain in the butt.  I wrote a powershell script for killing then restarting rdpclip, but no one's using it because it's a script (not to mention the execution policy is restricted for the box).  I'm trying to write a quick and dirty windows app where you click a button to kill rdpclip and restart it.  But I want to restrict it to the current user, and can't find a method for the Process class that does this.  So far, here's what I have:</p>
  
  <pre><code>Process[] processlist = Process.GetProcesses();
  foreach(Process theprocess in processlist)
  {
      if (theprocess.ProcessName == "rdpclip")
      {
        theprocess.Kill();
        Process.Start("rdpclip");
      }
  }
  </code></pre>
  
  <p>I'm not certain, but I think that's going to kill all the rdpclip processes.  I'd like to select by user, like my powershell script does:</p>
  
  <pre><code>taskkill /fi "username eq $env:username" /im rdpclip.exe
  &amp; rdpclip.ex
  </code></pre>
  
  <p>I suppose I could just invoke the powershell script from my executable, but that seems fairly kludgy.</p>
  
  <p>Apologies in advance for any formatting issues, this is my first time here.</p>
  
  <p>UPDATE:  I also need to know how to get the current user and select only those processes.  The WMI solution proposed below doesn't help me get that.  </p>
  
  <p>UPDATE2: Ok, I've figured out how to get the current user, but it doesn't match the process user over Remote Desktop.  Anyone know how to get username instead of the SID?</p>
  
  <p>Cheers,
  fr0man</p>