2010-04-19 99 views
3

我需要,而我的应用程序关闭怎么我做关闭Windows中的所有打开的应用程序,使用C#需要关闭所有正在运行的应用程序,而使用Windows注销从C#应用程序

我实现我的应用程序登录/注销功能本身,而不是Windows登录/注销,这样我需要关闭所有应用程序,同时注销我的应用程序点击,之后

+6

提醒我不要运行... – 2010-04-19 05:14:16

+0

你想杀死所有正在运行的进程吗? – Ando 2010-04-19 05:18:03

+1

**不要这样做!**你究竟在做什么?这是一种亭子应用程序吗?您可以通过修改组策略(等)来实现自助终端应用程序。如果你告诉我们你真的需要这个*作为*,那么我们或许可以给你一个更好的选择...... – 2010-04-19 05:32:05

回答

0
using System.Diagnostics; 

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

控制传递给我的应用程序,但你可能不得不把一些一种过滤器,以避免杀死某些进程,否则机器可能会有点不高兴。

+1

“可能会有点不安” - 部分取决于我的一天:thx! – riffnl 2010-04-19 08:24:39

0

无论出于何种原因你想这样做。这是一个有趣的方式来做到这一点!

using System.Diagnostics; 

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

不要用高架的过程来运行它;可能会导致你的操作系统崩溃。

+0

这太有趣了。 – jcao219 2010-09-10 23:03:20

0

你肯定不想只是遍历系统进程并全部杀死它们。有很多东西不应该被杀死。如果您在Windows注销,然后登录到其他用户下,那么有很多进程在系统级保持运行,并且被所有登录共享。作为一个很好的例子,如果我在Windows任务管理器中查看当前用户拥有的进程(不是系统),那么我将运行ATI Catalyst Control,用于我的触摸板的Synaptics应用程序,用于鼠标的Logitech应用程序,蓝牙堆栈,音频系统,戴尔无线局域网接口管理的东西......如果我杀了所有这些,我怀疑我的外围设备将开始行为奇怪,即使其他用户在我之后登录。


你能只是调用实际的Windows注销的东西用的P/Invoke,作为建议here?这种方式Windows本身可以做...嗯,无论它做什么当用户注销,而不是你必须自己处理它。

最糟糕的是,我会尝试收集启动时由Windows启动的东西。该 'Statup' 项目从的StartMenu:

C:\ Users \用户名\ AppData的\漫游\微软\的Windows \开始菜单\程序\启动

,并从注册表中的项目:

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Run中

然后在正在运行的进程循环,看看这确实属于这个用户,只能阻止这些用户。

相关问题