
如何在Windows XP系统中阻止Ctrl + Alt + Del,Alt + Tab和Ctrl + Esc键序列
在Windows9x / Me系统中,屏蔽Ctrl + Alt + Del和打开各种任务的键的方法是通过以下方法实现的:
BOOLbOldState;
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE和bOldState,0);
MS老板认为此方法非常业余,因此已在WindowsNT / 2000 / XP中对其进行了修改. 在这些较新的Windows版本中,用户使用Winlogon和GINA-Graphical Identification and Authentication登录,这意味着图形身份认证,这非常可怕!实际上就是这种情况. Winlogon是Windows系统的一部分,它提供交互式登录支持,而GINA是Winlogon用于实现身份验证的DLL,此DLL是msgina.dll. WlxInitialize是WlxActivateUserShell的输出,当然我不知道这两个,还有其他. 前者执行自己的初始化,后者激活用户的外壳. Windows使用此DLL来实现用户名和密码身份验证,但是开发人员可以使用自己的GINA代替msgina.dll. 例如,实现诸如智能卡,视网膜扫描仪,DNA检查等的认证机制,以输入用户名+密码的形式代替身份检查. 下表列出了与GINA相关的所有功能. 其中之一是WlxLoggedOnSAS. 当按Ctrl + Alt + Del时,Winlogon会调用此函数.
(表1)GINA功能列表
功能
说明
WlxActivateUserShell
激活用户外壳程序
WlxDisplayLockedNotice
允许GINA DLL显示锁信息
WlxDisplaySASNotice
当没有用户登录时,Winlogon会调用此功能
WlxDisplayStatusMessage
Winlogon调用此功能以显示状态消息
WlxGetConsoleSwitchCredentials
Winlogon调用此函数以读取当前登录用户的信任信息,并将其透明地传递给目标会话
WlxGetStatusMessage
Winlogon调用此函数以获取当前状态信息
WlxInitialize
为指定的窗口位置初始化GINA DLL
WlxIsLockOk
确认工作站已正确锁定
WlxIslogoffOk
验证注销是否正常
WlxLoggedOnSAS
用户已登录,并且工作站未锁定. 如果此时收到SAS事件,则Winlogon会调用此函数
WlxLoggedOutSAS
没有用户登录. 如果此时收到SAS事件,则Winlogon会调用此功能
WlxLogoff
请求注销操作时通知GINA DLL
Wlx协商
指示当前的Winlogon版本是否可以使用GINA DLL
WlxNetworkProviderLoad
在加载网络服务提供商以收集身份和身份验证信息之后,Winlogon调用此功能
WlxRemoveStatusMessage
Winlogon调用此函数告诉GINA DLL停止显示状态信息
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组策略编辑器. 在左窗格中查看“用户配置|管理模板|系统|登录/注销”,然后在右窗格策略中找到“禁用任务管理器”项并不困难. 如图2所示:
如何在XP系统'/>中阻止Ctrl + Alt + Del,Alt + Tab和Ctrl + Esc键序列
图1组策略编辑器
您可以通过设置此策略来阻止Ctrl + Alt + Del. 如果要通过编写代码来完成此操作,则必须操作以册表项: HKCU \
软件\
Microsoft \
Windows \
CurrentVersion \
政策\
系统\ DisableTaskMgr = dword: 1
完成此设置后,在Windows XP中,如果用户按Ctrl + Alt + Del,将弹出一个错误对话框,如图2所示:
如何在XP系统'/>中阻止Ctrl + Alt + Del,Alt + Tab和Ctrl + Esc键序列
图2错误消息
请注意,假定在控制面板的“用户帐户”管理中的“选择登录和注销选项”设置中启用了“使用欢迎屏幕”项. 如图3所示:
如何在XP系统'/>中阻止Ctrl + Alt + Del,Alt + Tab和Ctrl + Esc键序列
图3登录选项
否则,XP将使用Windows的传统登录模式,要求用户输入帐户名. Ctrl + Alt + Del键组合的行为也与传统行为相同. 注册表中DisableTaskMgr的设置仅用于阻止登录/注销对话框中的任务管理器按钮或使其变灰. 有人可能会问,关于任务管理器的文档没有明确说明,您如何知道DisableTaskMgr用于禁用任务管理器?我告诉你,我在使用GPEDIT时发现了它. GPEDIT是一个非常有用的工具,不仅可以使用它来编辑策略,还可以使用它来发现策略. 使用此工具,您可以轻松地在Windows中控制许多事情,从访问权限到是否使用IE的传统外观,从在对话框中显示PlacesBar到使用Ctrl + Alt + Del启动任务管理器. 简而言之,它可以配置数百种界面行为,因此它足以使系统管理员扩展三脚. 找到感兴趣的策略后,如何知道相应的注册表位置?有两种方法. 第一种是粗鲁的方法: 在修改策略前后,将注册表导出到.reg文件,并比较差异. 所有策略只不过是以下四个注册表项: //用户指定
HKEY_CURRENT_USER \软件\策略
HKEY_CURRENT_USER \软件\微软\ Windows \ CurrentVersion \策略
//指定的机器
HKEY_LOCAL_MACHINE \软件\策略
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies
第二种方法是直接转到信息源,检查描述该策略的管理模板文件(.adm). 以下是Windows XP的system.adm文件中DisableTaskMgr的描述: (Windows 2000对此描述稍有不同,请参考Windows 2000的资源开发套件以获取详细信息)! CAD选项
#if版本> = 4
说明!! CADOptions_Help
#endif
KEYNAME“软件\ Microsoft \ Windows \ CurrentVersion \策略\系统”
政策! DisableTaskMgr

#if版本> = 4
支持! SUPPORTED_Win2k
#endif
说明!! DisableTaskMgr_Help
VALUENAME“ DisableTaskMgr”
END POLICY
;
;更多Ctrl + Alt + Del策略在这里...
;
结束类别; Ctrl + Alt + Deloptions
......
......
DisableTaskMgr_Help =“防止用户启动“任务管理器”(Taskmgr.exe). \ n \ n如果启用此设置并且用户尝试启动任务管理器,则系统
将显示一条消息,说明策略禁止该操作. \ n \ n任务管理器允许用户启动或终止程序,监视计算机性能以及查看和监视计算机上的所有操作
程序
(包括系统服务),搜索程序执行文件名,并更改程序执行的优先级. “
DisableTaskMgr =“删除任务管理器”
上面是DisableTaskMgr的描述片段
在此描述中,KEYNAME和VALUENAME指定了注册表的键/值对. 使用此方法,可以为应用程序创建管理模板和策略,但是编辑和浏览.adm模板文件的编辑器必须支持Unicode字符. 如记事本或写字板即可. 另外,使用管理模板文件,系统管理员可以使用它来配置整个组织的必需策略-从中我们可以看到该文件在系统中起着重要的作用!有关模板管理文件格式的详细信息,请参阅平台SDK. 最后,应该强调的是DisableTaskMgr仅禁用Ctrl + Alt + Del的功能xp屏蔽win键,下面我们讨论如何捕获其键序列. 要拦截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处理此问题. 但是在Windows NT4.0(SP3 +),Windows 2000和WindowsXP时代,对该问题的处理方式有所不同,必须编写一个低级键盘驱动程序挂钩. 不要害怕,因为实现此钩子并不困难. 本文将介绍如何实现此键盘挂钩. 一般来说,系统级挂钩必须是DLL. 以下是本文提供的键盘挂钩DLL的源代码片段(TaskKeyHook.dll): 头文件
///////////////////////////////////////////////// // ///////////////
// TaskKeyHook.h
//
#define DLLIMPORT__declspec(dllimport)
DLLIMPORT BOOLDisableTaskKeys(BOOL bEnable,BOOL bBeep);
DLLIMPORT BOOLAreTaskKeysDisabled();
实施文件
///////////////////////////////////////////////// / ///////////////
// TaskKeyHook.cpp
//
#define _WIN32_WINNT 0x0500 //用于KBDLLHOOKSTRUCT
#include
#define DLLEXPORT__declspec(dllexport)
//////////////////
//应用(DLL)对象

//
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-179913-1.html
重则军警压制罪犯
其实中国手机性能质量都不比苹果差