I
import
Unregistered / Unconfirmed
GUEST, unregistred user!
Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列
编译/northtibet
关键字:Ctrl+Alt+Del,Alt+Tab,Ctrl+Esc,VK_LWIN,VK_RWIN,Task bar,Task Manager,任务栏,任务管理器。
下载本文源代码: TrapKeys.zip (95KB)
对于用过Windows的人,几乎没有人不知道Ctrl+Alt+Del组合键,尤其是在使用经常死机的Windows9x时,使用它的频率更高,这一组合键是专门为了系统安全起见提供的紧急出口。VC知识库在线杂志第11期,ac952_z_cn在他的个人专栏中写过一篇关于这方面的文章:“WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL”。因此本文侧重于介绍在Windows XP中如何实现屏蔽CTRL+ALT+DEL组合键,也就是任务管理器,任务切换组合键(Alt+Tab),任务栏和“开始”菜单(Ctrl+Esc,VK_LWIN,VK_RWIN)。这个方法也能应用于Windows 2000环境。
在Windows 9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的方法实现的:BOOL bOldState;
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &bOldState, 0); MS大佬认为这种方法很业余,所以在Windows NT/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便调用这个函数。
(表一)GINA 函数一览表函数 描述WlxActivateUserShell激活用户外壳程序WlxDisplayLockedNotice允许GINA DLL 显示锁定信息WlxDisplaySASNotice 当没有用户登陆时,Winlogon调用此函数WlxDisplayStatusMessageWinlogon 用一个状态信息调用此函数进行显示WlxGetConsoleSwitchCredentials Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话WlxGetStatusMessage Winlogon 调用此函数获取当前状态信息WlxInitialize 针对指定的窗口位置进行GINA DLL初始化WlxIsLockOk 验证工作站正常锁定WlxIslogoffOk 验证注销正常WlxLoggedOnSAS 用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon 调用此函数WlxLoggedOutSAS 没有用户登陆,如果此时收到SAS事件,则Winlogon 调用此函数WlxLogoff 请求注销操作时通知GINA DLL WlxNegotiate 表示当前的Winlogon版本是否能使用GINA DLLWlxNetworkProviderLoad 在加载网络服务提供程序收集了身份和认证信息后,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系统的组策略编辑器。在左边窗格查看"用户配置|管理模板|系统|登录/注销",则在右边窗格策略里不难发现"禁用任务管理器"一项。如图二所示:
编译/northtibet
关键字:Ctrl+Alt+Del,Alt+Tab,Ctrl+Esc,VK_LWIN,VK_RWIN,Task bar,Task Manager,任务栏,任务管理器。
下载本文源代码: TrapKeys.zip (95KB)
对于用过Windows的人,几乎没有人不知道Ctrl+Alt+Del组合键,尤其是在使用经常死机的Windows9x时,使用它的频率更高,这一组合键是专门为了系统安全起见提供的紧急出口。VC知识库在线杂志第11期,ac952_z_cn在他的个人专栏中写过一篇关于这方面的文章:“WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL”。因此本文侧重于介绍在Windows XP中如何实现屏蔽CTRL+ALT+DEL组合键,也就是任务管理器,任务切换组合键(Alt+Tab),任务栏和“开始”菜单(Ctrl+Esc,VK_LWIN,VK_RWIN)。这个方法也能应用于Windows 2000环境。
在Windows 9x/Me系统中,屏蔽Ctrl+Alt+Del和各种任务开关键的方法是通过下面的方法实现的:BOOL bOldState;
SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, &bOldState, 0); MS大佬认为这种方法很业余,所以在Windows NT/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便调用这个函数。
(表一)GINA 函数一览表函数 描述WlxActivateUserShell激活用户外壳程序WlxDisplayLockedNotice允许GINA DLL 显示锁定信息WlxDisplaySASNotice 当没有用户登陆时,Winlogon调用此函数WlxDisplayStatusMessageWinlogon 用一个状态信息调用此函数进行显示WlxGetConsoleSwitchCredentials Winlogon调用此函数读取当前登陆用户的信任信息,并透明地将它们传到目标会话WlxGetStatusMessage Winlogon 调用此函数获取当前状态信息WlxInitialize 针对指定的窗口位置进行GINA DLL初始化WlxIsLockOk 验证工作站正常锁定WlxIslogoffOk 验证注销正常WlxLoggedOnSAS 用户已登陆并且工作站没有被加锁,如果此时接收到SAS事件,则Winlogon 调用此函数WlxLoggedOutSAS 没有用户登陆,如果此时收到SAS事件,则Winlogon 调用此函数WlxLogoff 请求注销操作时通知GINA DLL WlxNegotiate 表示当前的Winlogon版本是否能使用GINA DLLWlxNetworkProviderLoad 在加载网络服务提供程序收集了身份和认证信息后,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系统的组策略编辑器。在左边窗格查看"用户配置|管理模板|系统|登录/注销",则在右边窗格策略里不难发现"禁用任务管理器"一项。如图二所示: