我想写一个应该自动执行一些任务的程序,如果有人登录到我的服务器。如何监视Windows Server 2003/2008用户登录?
我对此的问题是:
1)是否有一个最后的登录记录中 在 用户登录,我可以使用/监视器我 目的后立即设置?如果不是有什么 类似,我可以使用?
2)什么是最好的方式来不断 监测这样的价值?
我想写一个应该自动执行一些任务的程序,如果有人登录到我的服务器。如何监视Windows Server 2003/2008用户登录?
我对此的问题是:
1)是否有一个最后的登录记录中 在 用户登录,我可以使用/监视器我 目的后立即设置?如果不是有什么 类似,我可以使用?
2)什么是最好的方式来不断 监测这样的价值?
您最好的(也是最安全的)赌注是创建一个接受SERVICE_CONTROL_SESSIONCHANGE控件的服务。
这将允许您的服务控制处理程序在用户登录,注销,锁定会话和各种其他选项时接收控件。在链接打击中寻找更多信息。
这是通过创建具有SERVICE_ACCEPT_SESSIONCHANGE国旗在dwControlsAccepted服务完成的,如下:
SERVICE_STATUS ss;
...
ss.dwControlsAccepted |= SERVICE_ACCEPT_SESSIONCHANGE;
其次:
// This lets the service accept the session change ctrls
// The service handle here is received by calling RegisterServiceCtrlHandler
SetServiceStatus(hServiceHandle,
&ss);
这将允许Windows发送SERVICE_CONTROL_SESSIONCHANGE控制你的HandlerEx函数,应该看起来像这样:
DWORD WINAPI HandlerEx(DWORD dwControl,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
switch (dwControl)
{
...// Regular control handling
case (SERVICE_CONTROL_SESSIONCHANGE):
switch(dwEventType)
{
case(WTS_SESSION_LOGON):
// Handle logon
break;
case(WTS_SESSION_LOCK):
// Handle lock
break;
...
}
break;
...
}
}
您可以阅读您可以从这里获得的所有不同会话更改通知:WM_WTSSESSION_CHANGE,您需要的所有通知都位于说明的wParam部分。
好吧,这就是它的要点。您可以在这里阅读handlerex功能的更多信息:HandlerEx以及更多关于服务的信息:Service Functions。我建议你阅读ServiceMain函数,RegisterServiceCtrlHandler函数,最重要的是阅读MSDN页面上发布的示例。他们超级有用。
祝你好运!
管理任务,所有管理员应该知道如何做到这一点。问一个。 – leppie 2010-11-22 06:42:39