第7章WinLogon编程分析和总结.docx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 7 章 WinLogon 编程 WinLogon 是系统提供的一个重要进程,熟悉 WinLogon 编程,能够更好地对系统进行控制。本章主要介绍 GINA 程序的编写。 WinLogon 概述 Windows 环境的 Logon 程序是系统自行启动的重要进程,这个进程领先于外壳程 序运行,它主要用于对 Windows 工作站和相应桌面进行保护,确保存取权限。一般 地,本地系统拥有对这些对象存取的全部权限,只有通过登录界面的用户才能存取工作站对象,完全存取应用程序桌面对象。 另外,WinLogon 率先挂接了 User32 服务器,监视 Ctrl+Alt+DelSAS(Secure AttentionSequence)事件。WinLogon 把 SAS 可用事件信息通知给 GINAs,作为安全守护序列或者作为它们的一部分。一般地,GINAs 应该监视它们自己的 SASs 事件。然而,任何支持标准 Ctrl+Alt+Del 安全守护的 GINA 程序,都将被 WinLogon 作为WinLogon 支持的 SAS 对象之一。 当 WinLogon 遇到 SAS 事件发生时,或者 GINA 把 SAS 通知给 WinLogon 时, WinLogon 就会设置相应的状态标志。改变 WinLogon 桌面,并调用其中一个 GINA 提供的 SAS 处理函数。 当用户完成系统登录的时候,他们的配置信息被加载到注册表中。用户的信息将使用 HKEY_LOCAL_USER 注册键。WinLogon 的这些自动操作是在成功登录之后, 在激活最新登录用户的外壳程序之前。 用户登录时 GINA 负责为登录用户创建一个或者多个初始化进程。WinLogon 为GINA 提供了支持,把最新登录用户的安全属性应用到他们创建的进程中。然而,对于 GINA 可取的方法是调用 Windows 的 CreateProcessAsUser 函数,让系统提供这种服务。 WinLogon 会自动监视键盘和鼠标活动,决定什么时候激活屏幕保护程序。一旦 屏幕保护程序被激活,WinLogon 会持续监视键盘和鼠标活动,决定什么时候终止屏幕保护程序。如果屏幕保护程序启用了安全属性,WinLogon 就会锁定工作站。当有鼠标和键盘活动时,Winlogon 会调用 GINA 的 WlxDisplayLockedNotice 函数,继续锁定工作者。如果屏幕保护程序没有应用安全属性,任何键盘和鼠标活动都会终止屏幕保护程序而不必通知给 GINA。 WinLogon 通知包的创建 WinLogon 通知包是一个动态链接库,这个动态链接库输出了一些函数,用于处 理 WinLogon 事件。比如说,用户登录到系统时,WinLogon 会逐次调用通知包的登录事件处理函数提供事件的信息。通知包中的事件处理函数的名称由开发者提供,但是 它的函数名称必须在注册表中注册,WinLogon 会自动检查注册表,得到函数的名称。用户不必为每一个 WinLogon 事件实现和注册全部的事件处理。每一种事件处理 函数都必须遵循事件处理函数规范。这种规范只有一个参数,即 WLX_NOTIFICATION_INFO 结构类型。 WinLogon 将忽略事件处理函数的输出,如果处理一个事件时需要和WinLogon 交互,应该使用 Winlgon 支持函数。 这些通知事件包括锁定、解锁、注销、登录、启动、关机、启动屏幕保护程序、终止屏幕保护程序、启动外壳程序等。 开发 WinLogon 通知包可以作为开发 Windows 服务的替代方案,这种方法的好处 在于它可以得到许多用户活动的通知,而且编码要比使用WindowsNT 服务简单得多。 创建一个 WinLogon 通知包需要创建一个动态链接库,为了让WinLogon 知道这个动态链接库,可以向注册表中加入适当的注册信息。 在程序实现中启动一个 Win32 程序,由于进程是由 WinLogon 启动的,该进程拥 有系统账号,因此用户是不能简单地通过终止任务结束这个进程的。这和WindowsNT 服务是一致的。用户可以在 Logoff 中通知处理时终止进程。如果进程需要保持激活, 可以使用 EndProcessAtWinlogoff 函数。如果希望这个进程为登录用户所有,则应该在启动通知期间而不是 logon 通知中使用 CreateProcessAsUser 函数。 实现步骤如下: 创建动态链接库。 //sample.cpp #includewindows.h #includeWinwlx.h PROCESS_INFORMATIONg_pi; TCHARg_szPath[]=_T(c:\somepath\execut.exe\arguments\); S

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档