Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要关闭所有正在运行的应用程序而不使用windows从c#应用程序注销_C#_Desktop Application - Fatal编程技术网

需要关闭所有正在运行的应用程序而不使用windows从c#应用程序注销

需要关闭所有正在运行的应用程序而不使用windows从c#应用程序注销,c#,desktop-application,C#,Desktop Application,当我的应用程序关闭时,我需要关闭windows中所有打开的应用程序。如何使用c# 我正在我的应用程序中实现登录/注销功能,而不是windows登录/注销,因此我需要在应用程序中单击注销时关闭所有应用程序,然后将控制权传递给我的应用程序 using System.Diagnostics; Process [] localAll = Process.GetProcesses(); foreach(Process p in localAll) { p.Kill(); } 但是您可能必须加入

当我的应用程序关闭时,我需要关闭windows中所有打开的应用程序。如何使用c#

我正在我的应用程序中实现登录/注销功能,而不是windows登录/注销,因此我需要在应用程序中单击注销时关闭所有应用程序,然后将控制权传递给我的应用程序

using System.Diagnostics;

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

但是您可能必须加入某种过滤器,以避免终止某些进程,因为否则机器可能会有点不正常。

无论您出于什么原因想这样做。这是一种更有趣的方式

using System.Diagnostics;

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

但不要在提升的进程中运行它;可能会导致您的操作系统崩溃。

您肯定不希望只循环系统进程并将其全部杀死。有很多东西不应该被杀死。如果您在windows中“注销”,然后在另一个用户下登录,则有许多进程在系统级别保持运行,并由所有登录者共享

作为一个很好的例子,如果我在Windows任务管理器中查看当前用户拥有的进程(不是系统),那么我会运行ATI Catalyst Control、触摸板的Synaptics应用程序、鼠标的Logitech应用程序、蓝牙堆栈的某个程序、音频系统的某个程序、Dell无线lan接口管理的某个程序。。。如果我杀死了所有这些,我怀疑我的外围设备会开始出现异常行为,即使其他用户在我之后登录


你能按照建议用p/Invoke调用实际的Windows注销功能吗?这样Windows本身就可以。。。好吧,不管它在用户注销时做什么,而不是你自己处理

在最坏的情况下,我会尝试收集Windows在启动期间启动的内容。“开始”菜单中的“状态”项:

C:\Users\User\u Name\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

以及下列登记处的项目:

HKEY\ U当前\用户\软件\ Microsoft\Windows\CurrentVersion\Run


然后循环运行进程,查看哪些进程真正属于该用户,并仅停止这些进程。

提醒我不要运行这些进程…要杀死所有正在运行的进程吗?不要这样做!你到底想做什么?这是某种信息亭应用程序吗?您可以通过修改组策略(etc)来实现do kiosk应用程序。如果你告诉我们你真正需要它做什么,那么我们也许可以给你一个更好的选择……好吧,这个答案并没有告诉我们为什么你认为在注销场景中必须自己关闭所有应用程序。你这么做的目的是什么?如果您提供更多详细信息,您可能会得到一个更好方法的答案。如果您确实想要运行自己的登录/注销代码,我认为您最好根据操作系统查看GINA和/或“凭据提供商”。我看不出你怎么能把它写成一个应用程序而不让别人轻易“闯入”。