利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx

上传人:b****6 文档编号:16148883 上传时间:2022-11-21 格式:DOCX 页数:15 大小:24.02KB
下载 相关 举报
利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx_第1页
第1页 / 共15页
利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx_第2页
第2页 / 共15页
利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx_第3页
第3页 / 共15页
利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx_第4页
第4页 / 共15页
利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx

《利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

利用低级键盘钩子实现计算机锁定Word文档下载推荐.docx

其中有一个是WlxLoggedOnSAS,当按下Ctrl+Alt+Del键时,Winlogon便调用这个函数。

(表一)GINA函数一览表

函数 

描述

WlxActivateUserShell

激活用户外壳程序

WlxDisplayLockedNotice

允许GINADLL显示锁定信息

WlxDisplaySASNotice 

当没有用户登陆时,Winlogon调用此函数

WlxDisplayStatusMessage

Winlogon用一个状态信息调用此函数进行显示

WlxGetConsoleSwitchCredentials 

Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话

WlxGetStatusMessage 

Winlogon调用此函数获取当前状态信息

WlxInitialize 

针对指定的窗口位置进行GINADLL初始化

WlxIsLockOk 

验证工作站正常锁定

WlxIslogoffOk 

验证注销正常

WlxLoggedOnSAS 

用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon调用此函数

WlxLoggedOutSAS 

没有用户登陆,如果此时收到SAS事件,则Winlogon调用此函数

WlxLogoff 

请求注销操作时通知GINADLL 

WlxNegotiate 

表示当前的Winlogon版本是否能使用GINADLL

WlxNetworkProviderLoad 

在加载网络服务提供程序收集了身份和认证信息后,Winlogon调用此函数

WlxRemoveStatusMessage 

Winlogon调用此函数告诉GINADLL停止显示状态信息

WlxScreensaverNotify 

允许GINA与屏幕保护操作交互

WlxShutdown 

在关闭之前Winlogon调用此函数,允许GINA实现任何关闭任务,例如从读卡器中退出智能卡

WlxStartApplication 

当系统需要在用户的上下文中启动应用程序时调用此函数

WlxWkstaLockedSAS

当工作站被锁定,如果接收到一个SAS,则Winlogon调用此函数

在默认情况下,GINA显示登陆对话框,用户输入用户名及口令。

所以要想屏蔽掉Ctrl+Alt+Del,则可以写一个新的MyGina.dll,其中提供接口调用msgina.dll的函数WlxLoggedOnSAS,从而实现Ctrl+Alt+Del屏蔽。

或者编写一个键盘驱动程序来实现。

难道屏蔽Ctrl+Alt+Del真的象上述所说的那么麻烦吗?

有没有更好的方法呢?

答案是肯定的。

所以忘掉GINA吧,使用操作系统的策略设置完全可以搞掂这个问题。

方法是进入"

开始"

菜单,选择"

运行"

,然后在运行对话框中输入"

gpedit.msc"

,启动Windows系统的组策略编辑器。

在左边窗格查看"

用户配置|管理模板|系统|登录/注销"

,则在右边窗格策略里不难发现"

禁用任务管理器"

一项。

如图二所示:

图一组策略编辑器

通过对这个策略的设置可以屏蔽掉Ctrl+Alt+Del。

如果要通过编写代码来实现,则必须操作下面的注册表项:

HKCU\

Software\

Microsoft\

Windows\

CurrentVersion\

Policies\

System\DisableTaskMgr=dword:

1

如此设置之后,则在WindowsXP中,如果用户按下Ctrl+Alt+Del,则会弹出一个出错对话框,如图二所示:

图二错误信息

注意这里假设在控制面板中“用户帐号”管理的“选择登录和注销选项”设置启用了“使用欢迎屏幕”一项。

如图三所示:

图三登录选项

否则,XP将使用Windows的传统登录模式,要求用户输入帐户名。

并且Ctrl+Alt+Del组合键的行为也和传统的行为一样,注册表中DisableTaskMgr的设置也只是将登录/注销对话框中的任务管理器按钮屏蔽或置灰。

有人可能会问,有关任务管理器的文档又没有明确说明,那你是怎么知道DisableTaskMgr是用来禁用任务管理器的呢?

告诉你吧,我是在使用GPEDIT时发现的。

GPEDIT是一个非常有用的工具,不仅可以用它来编辑策略,还可以用它来发现策略。

利用这个工具可以轻松控制Windows的许多东西,从许可权限的存取到是否使用IE的传统外观,从是否显示对话框中的PlacesBar到是否用Ctrl+Alt+Del启动任务管理器。

总之用它可以配置上百个界面行为,因此它是一个足以让系统管理员垂延三尺的工具。

一旦找到了感兴趣的策略,那如何知道相应的注册表位置呢?

有两种方法。

第一种是比较粗鲁的办法:

在修改策略的前后将注册表输出到一个.reg文件,然后比较它们有什么不同。

所有的策略无外乎以下的四个注册表键:

//用户指定

HKEY_CURRENT_USER\Software\Policies

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies

//机器指定

HKEY_LOCAL_MACHINE\Software\Policies

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies

第二种方法是直捣信息源头--检查描述策略的管理模板文件(.adm)。

下面是WindowsXP的system.adm文件对DisableTaskMgr的描述:

(Windows2000对此的描述稍有不同,其细节请参考Windows2000的资源开发包)

CATEGORY!

!

CADOptions

#ifversion>

=4

EXPLAIN!

CADOptions_Help

#endif

KEYNAME"

Software\Microsoft\Windows\CurrentVersion\Policies\System"

POLICY!

DisableTaskMgr

SUPPORTED!

SUPPORTED_Win2k

DisableTaskMgr_Help

VALUENAME"

DisableTaskMgr"

ENDPOLICY

;

MoreCtrl+Alt+Delpolicieshere...

ENDCATEGORY;

Ctrl+Alt+Deloptions

……

DisableTaskMgr_Help="

防止用户启动'

'

任务管理器'

(Taskmgr.exe)。

\n\n如果该设置被启用,并且用户试图启动任务管理器,系统

会显示消息,解释是一个策略禁止了这个操作。

\n\n任务管理器让用户启动或终止程序,监视计算机性能,查看及监视计算机上所有运行

中的程序(包含系统服务),搜索程序的执行文件名,及更改程序运行的优先顺序。

"

DisableTaskMgr="

删除任务管理器"

以上是DisableTaskMgr的描述片断

正是在这段描述中KEYNAME和VALUENAME指定了注册表的键值对。

利用这种方法,你可以为自己的应用程序创建管理模板和策略,但编辑和浏览.adm模板文件的编辑器必须支持Unicode字符。

如Notepad或者WordPad等都可以。

此外,使用管理模板文件,系统管理员可以用它为整个组织配置需要的策略——由此可以看出,此文件在系统中的地位举足轻重!

有关模板管理文件格式的详细信息请参考平台SDK。

最后需要强调的是DisableTaskMgr只是禁用Ctrl+Alt+Del的功能。

下面我们来讨论如何捕获它的按键序列。

要想截获Ctrl+Alt+Del,有三种可选择的方法:

∙1、编写一个GINA代理;

此方法我们在以后的文章中介绍。

实际上,ac952_z_cn的个人专栏文章:

“WINDOWSNT/2000下如何屏蔽CTRL+ALT+DEL”使用的就是这种方法。

∙2、编写一个键盘驱动程序;

本文例子程序使用的方法。

∙3、用自己的程序代替任务管理器程序TaskMgr.exe。

屏蔽Ctrl+Alt+Del解决方案的具体实现细节请参考本文的例子代码。

下面让我们来解决屏蔽任务切换键序列的问题,这些键序列包括Alt+Tab、Ctrl+Esc、Alt+Esc、VK_LWIN/VK_RWIN以及任务栏。

在很早以前的Window3.1年代,处理这个问题的方法是通过WM_SYSKEYDOWN实现。

到了Windows9x时期,本文前面提到过对这个问题的处理方法,使用SPI_SETSCREENSAVERRUNNING。

但是进入WindowsNT4.0(SP3+),Windows2000以及WindowsXP时代,对这个问题的处理已经有所不同,必须写一个低级的键盘驱动钩子。

不要怕,因为要实现这个钩子并不是很难。

本文下面会介绍如何实现这个键盘钩子。

一般来讲,系统级钩子必须是一个DLL。

下面是本文提供的一个键盘钩子DLL的源代码片断(TaskKeyHook.dll):

头文件

////////////////////////////////////////////////////////////////

//TaskKeyHook.h

//

#defineDLLIMPORT__declspec(d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1