- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 部编人教版七年级语文上册同步练习《论语》十二章.docx
- 第07章路由协议原理及配置.docx
- 第7章 分销决策案例.docx
- 第7章tcpip分析和总结.docx
- 存货盘存方法.docx
- 存在感和拖延症.docx
- 磋商阶段的谈判策略.docx
- 痤疮的日常护理.docx
- 错过……分析和总结.docx
- 搭建Java开发环境.docx
- 福建省邵武市四中学片区达标名校2024届中考化学最后一模试卷含解析.doc
- 山东省临沂市沂南县重点达标名校2024届中考适应性考试化学试题含解析.doc
- 2024届浙江省嘉兴地区达标名校中考猜题化学试卷含解析.doc
- 2024届山东省菏泽市单县市级名校中考化学最后一模试卷含解析.doc
- 上海市建平西校2024届中考适应性考试化学试题含解析.doc
- 江苏省南京市六校联考2024年中考联考化学试卷含解析.doc
- 江苏省扬州市江都区城区重点名校2024届中考考前最后一卷化学试卷含解析.doc
- 郑州二中学2024届中考化学五模试卷含解析.doc
- 2024届湖南省张家界市永定区重点中学中考化学最后冲刺模拟试卷含解析.doc
- 河北省石家庄市43中学2024年中考化学模拟试题含解析.doc
文档评论(0)