首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何监控windows服务器2003/2008用户登录?

如何监控windows服务器2003/2008用户登录?
EN

Stack Overflow用户
提问于 2010-11-22 06:12:27
回答 1查看 4K关注 0票数 0

我想写一个程序,如果有人登录到我的服务器上,应该会自动执行一些任务。

我对此的问题是:

  • 1)是否有在用户登录之后设置的最后一条登录记录,使我可以使用/监视来实现我的目的?如果没有,我可以用类似的东西吗?
  • 2)持续监控这种价值的最好方法是什么?
EN

Stack Overflow用户

回答已采纳

发布于 2010-11-22 07:17:14

您最好(也是最安全的)选择是创建一个接受SERVICE_CONTROL_SESSIONCHANGE控件的服务。

这将允许您的服务控制处理程序在用户登录、注销、锁定会话和其他各种选项时接收控件。寻找更多的信息,在链接打击。

这是通过创建一个在SERVICE_ACCEPT_SESSIONCHANGE中具有dwControlsAccepted标志的服务来完成的,如下所示:

代码语言:javascript
运行
复制
SERVICE_STATUS ss;
...
ss.dwControlsAccepted |= SERVICE_ACCEPT_SESSIONCHANGE;

其次是:

代码语言:javascript
运行
复制
// This lets the service accept the session change ctrls
// The service handle here is received by calling RegisterServiceCtrlHandler
SetServiceStatus(hServiceHandle,
                 &ss);

这将允许窗口将SERVICE_CONTROL_SESSIONCHANGE控件发送到您的HandlerEx函数,该函数应该如下所示:

代码语言:javascript
运行
复制
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;

       ...
   }
}

您可以阅读从这里接收到的所有不同的会话更改通知:变化,您需要的所有通知都在描述的wParam部分。

不管怎样,这就是它的要旨。您可以在这里阅读关于handlerex函数的更多信息:HandlerEx,以及关于一般服务的更多信息:服务功能。我建议您阅读ServiceMain函数、RegisterServiceCtrlHandler函数,最重要的是阅读发布在MSDN页面上的示例。它们非常有用。

祝好运!

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4242776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档