在用户登录时,我使用C#中的CreateProcessWithLogonW以管理员身份启动流程。
当用户现在注销时,程序不会关闭。
我想让它在使用CreateProcessWithLogonW启动它的用户注销时关闭。我该怎么做?
我无法让执行CreateProcessWithLogonW的进程继续运行,因此以管理员身份启动的程序必须自行终止。
答案 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()。