Я работаю на многопользовательском Windows Server, и ошибка rdpclip кусает нас всех ежедневно. Обычно мы просто открываем диспетчер задач и уничтожаем, затем перезапускаем rdpclip, но это неприятно. Я написал сценарий powershell для уничтожения, а затем перезапуска rdpclip, но никто не использует его, потому что это сценарий (не говоря уже о том, что политика выполнения ограничена для коробки). Я пытаюсь написать быстрое и грязное приложение для Windows, где вы нажимаете кнопку, чтобы убить rdpclip и перезапустить его. Но я хочу ограничить его текущим пользователем и не могу найти метод для класса Process, который делает это. Пока что вот что у меня есть:
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist)
{
if (theprocess.ProcessName == "rdpclip")
{
theprocess.Kill();
Process.Start("rdpclip");
}
}
Я не уверен, но думаю, что это убьет все процессы rdpclip. Я бы хотел выбрать пользователя, как это делает мой скрипт powershell:
taskkill /fi "username eq $env:username" /im rdpclip.exe
& rdpclip.ex
Полагаю, я мог бы просто вызвать скрипт powershell из моего исполняемого файла, но это выглядит довольно глупо.
Заранее извиняюсь за любые проблемы с форматированием, я здесь впервые.
ОБНОВЛЕНИЕ: Мне также нужно знать, как получить текущего пользователя и выбрать только эти процессы. Решение WMI, предложенное ниже, не помогает мне получить это.
ОБНОВЛЕНИЕ2: Хорошо, я выяснил, как получить текущего пользователя, но он не соответствует пользователю процесса через удаленный рабочий стол. Кто-нибудь знает, как получить имя пользователя вместо SID?
Ура,
fr0man