在注销时使用CreateProcessWithLogonW创建的退出过程

时间:2012-06-21 22:08:37

标签: c# logout

在用户登录时,我使用C#中的CreateProcessWithLogonW以管理员身份启动流程。

当用户现在注销时,程序不会关闭。

我想让它在使用CreateProcessWithLogonW启动它的用户注销时关闭。我该怎么做?

我无法让执行CreateProcessWithLogonW的进程继续运行,因此以管理员身份启动的程序必须自行终止。

2 个答案:

答案 0 :(得分:0)

如果发出CreateProcessWithLogonW的应用程序仍在运行,您可以检测Windows何时开始注销并关闭子应用程序。 例如,使用SystemEvents.SessionEnding Event

答案 1 :(得分:0)

我通过使用http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.aspx例2中描述的HiddenForm解决了这个问题 这最初用于Windows服务,但也适用于没有GUI的Windows窗体应用程序。您没有GUI(也是控制台 - 应用程序,Windows服务)的应用程序中没有获得SessionEnding事件的原因是它通过Windows消息泵发送,该消息泵仅分配给每个打开的窗口(基本上)。

有关Windows消息的更多信息,请阅读本文:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644927%28v=vs.85%29.aspx

要使此示例真正不可见(在xp中),您还需要

this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
this.Visible = false;

in HiddenForm.InitializeComponent()。