1

我有一个作为计划任务运行的程序。该程序在 XP 上作为 SYSTEM 运行。这个想法是程序将在后台运行,而 USER 处于活动状态。

当特定情况发生时,我需要程序注销用户。

我尝试使用:

[DllImport("user32.dll")]
public static extern int ExitWindowsEx(int uFlags, int dwReason);

但这似乎没有注销用户。

我想也许它正在注销 SYSTEM,因为它以 SYSTEM 身份运行。

我怎样才能登录用户?

谢谢,夏日灯泡。

4

2 回答 2

0

我认为您需要以该用户身份运行一些代码。创建一个在用户登录时运行的应用程序,然后监视事件。让您的服务设置事件,然后代码将调用 ExitWindowsEx 方法。正如詹姆斯所说,您仍然需要使用 forceifhung 和 logoff 参数。

于 2010-08-10T16:04:04.957 回答
0

如果您显示 的标志会有所帮助ExitWindowsEx但您可能需要冒充用户,尽管我认为这不太可能。如果我记得注销当前用户就足够了,但是您可能必须强制注销,否则它可以被取消,例如,如果用户没有保存一些更改。

但是要模拟用户,您可以查看: http: //www.codeproject.com/KB/system/UserImpersonation.aspx

我将从这里开始,并包括注销和 forceifhung 值:http: //msdn.microsoft.com/en-us/library/aa376868 (VS.85).aspx

它类似于EWX_FORCEIFHUNG | EWX_LOGOFF参数。

更新:

我希望迈克是正确的,冒充在这里无济于事。

于 2010-08-10T15:30:31.630 回答