2010-04-19 1 views
3

мне нужно, чтобы закрыть все открытые приложения в окнах в то время как мое приложение закрывается, как я сделать это с помощью C#необходимо закрыть все запущенные приложения, без использования окна выхода из системы из C# приложения

Я реализую вход/функциональные возможности выхода из системы в моем приложении сам вместо окна входа в систему/выхода из системы, так что мне нужно, чтобы закрыть все приложения, в то время как выход из системы щелкнуло в моем приложении и передать управление моим приложением после этого

+6

Напомнить мне не запускать это ... –

+0

Вы хотите убить все запущенные процессы? – Ando

+1

** Не делайте этого! ** Что вы на самом деле пытаетесь сделать? Это какое-то приложение для киосков? Вы можете добиться применения киосков с помощью изменений в групповой политике (и т. Д.). Если вы скажете нам, что вам на самом деле нужно это * для *, тогда мы, возможно, можем дать вам лучшую альтернативу ... –

ответ

0
using System.Diagnostics; 

Process [] localAll = Process.GetProcesses(); 
foreach(Process p in localAll) 
{ 
    p.Kill(); 
} 

Но вы, вероятно, придется положить в какой-то фильтр для избегайте уничтожения определенных процессов, поскольку в противном случае машина может немного расстроиться.

+1

«может немного расстроиться» - часть сделала мой день: thx! – riffnl

0

По какой-либо причине вы хотите это сделать. Это немного смешной способ сделать это!

using System.Diagnostics; 

Parallel.ForEach(Process.GetProcesses(), process => process.Kill()); 

Не запускайте это с повышенным ходом; вероятно, приведет к сбою вашей ОС.

+0

Это просто слишком весело. – jcao219

0

Вы определенно НЕ хотите просто перебирать системные процессы и убивать их всех. Есть много вещей, которые не должны быть убиты. Если вы «выходите из системы» в Windows, тогда войдите под другим пользователем, есть много процессов, которые остаются на системном уровне и разделяются всеми входами.

Как хороший пример, если я смотрю в диспетчере задач Windows при процессах, которыми владеет мой текущий пользователь (а не в системе), то у меня работает ATI Catalyst Control, приложение Synaptics для моего тачпада, приложение Logitech для моей мыши , что-то для стека Bluetooth, что-то для аудиосистемы, средства управления беспроводным LAN-интерфейсом Dell ... Если я убью всех этих, я подозреваю, что мои периферийные устройства начнут вести себя странно, даже если другой пользователь войдет в систему после меня.


Не могли бы вы назвать фактический материал для Windows с выходом из форума P/Invoke, как это было предложено here? Таким образом, Windows сама может сделать ... ну, независимо от того, что он делает, когда пользователь выходит из системы, вместо того, чтобы иметь дело с ним самостоятельно.

В худшем случае, я попытался бы собрать вещи, которые были запущены Windows во время запуска. В 'Statup' элементы из StartMenu:

C: \ Users \ имя_пользователя \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup

и элементы из реестра по адресу:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run

Затем перебирает запущенные процессы и посмотреть, что на самом деле принадлежат этому пользователю и только останавливают их.