您好,欢迎来到 - 67学习网 - http://www.67xuexi.com !

XP系统中如何屏蔽Ctrl+Esc键序列

摘要:// 机器指定HKEY_LOCAL_MACHINESoftwarePoliciesHKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPolicies第二种方法是直捣信息源头--检查描述策略的管理模板文件(.adm)。下面是Windows XP的system.adm文件对 DisableTaskMgr的描述:(Windows 2000对此的描述稍有不同,其细节请参考Windows 2000的资源开发包)CATEGORY !!CADOptions#if version >= 4EXPLAIN !!CADOptions_Help#endifKEYNAME "SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"POLICY !!DisableTaskMgr#if version >= 4SUPPORTED !!SUPPORTED_Win2k#endifEXPLAIN !!DisableTaskMgr_HelpVALUENAME
XP系统中如何屏蔽Ctrl+Esc键序列,标签:电脑常识大全,http://www.67xuexi.com

  // 机器指定

  HKEY_LOCAL_MACHINESoftwarePolicies

  HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPolicies

  第二种方法是直捣信息源头--检查描述策略的管理模板文件(.adm)。下面是Windows XP的system.adm文件对 DisableTaskMgr的描述:(Windows 2000对此的描述稍有不同,其细节请参考Windows 2000的资源开发包)

  CATEGORY !!CADOptions

  #if version >= 4

  EXPLAIN !!CADOptions_Help

  #endif

  KEYNAME "SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem"

  POLICY !!DisableTaskMgr

  #if version >= 4

  SUPPORTED !!SUPPORTED_Win2k

  #endif

  EXPLAIN !!DisableTaskMgr_Help

  VALUENAME "DisableTaskMgr"

  END POLICY

  ;

  ; More Ctrl+Alt+Del policies here...

  ;

  END CATEGORY ; Ctrl+Alt+Del options

  ……

  ……

  DisableTaskMgr_Help="防止用户启动''任务管理器''(Taskmgr.exe)。nn如果该设置被启用,并且用户试图启动任务管理器,系统

  会显示消息,解释是一个策略禁止了这个操作。nn任务管理器让用户启动或终止程序,监视计算机性能,查看及监视计算机上所有运行

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

  DisableTaskMgr="删除任务管理器"

  以上是DisableTaskMgr的描述片断

  正是在这段描述中KEYNAME 和VALUENAME指定了注册表的键值对。利用这种方法,你可以为自己的应用程序创建管理模板和策略,但编辑和浏览.adm模板文件的编辑器必须支持Unicode字符。如Notepad或者WordPad等都可以。此外,使用管理模板文件,系统管理员可以用它为整个组织配置需要的策略——由此可以看出,此文件在系统中的地位举足轻重!有关模板管理文件格式的详细信息请参考平台SDK。最后需要强调的是DisableTaskMgr只是禁用Ctrl+Alt+Del的功能。下面我们来讨论如何捕获它的按键序列。要想截获Ctrl+Alt+Del,有三种可选择的方法:

  1、 编写一个GINA代理;此方法我们在以后的文章中介绍。实际上,ac952_z_cn的个人专栏文章:“WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL”使用的就是这种方法。

  2、 编写一个键盘驱动程序;本文例子程序使用的方法。

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

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

  下面让我们来解决屏蔽任务切换键序列的问题,这些键序列包括Alt+Tab、Ctrl+Esc、Alt+Esc、VK_LWIN/VK_RWIN以及任务栏。在很早以前的Window 3.1年代,处理这个问题的方法是通过WM_SYSKEYDOWN实现。到了Windows 9x时期,本文前面提到过对这个问题的处理方法,使用SPI_SETSCREENSAVERRUNNING。但是进入Windows NT 4.0 (SP3 +),Windows 2000以及Windows XP时代,对这个问题的处理已经有所不同,必须写一个低级的键盘驱动钩子。不要怕,因为要实现这个钩子并不是很难。本文下面会介绍如何实现这个键盘钩子。一般来讲,系统级钩子必须是一个DLL。下面是本文提供的一个键盘钩子DLL的源代码片断(TaskKeyHook.dll):

  头文件

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

  //TaskKeyHook.h

  //

  #define DLLIMPORT __declspec(dllimport)

  DLLIMPORT BOOL DisableTaskKeys(BOOL bEnable, BOOL bBeep);

  DLLIMPORT BOOL AreTaskKeysDisabled();

  实现文件

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

  // TaskKeyHook.cpp

  //

  #define _WIN32_WINNT 0x0500 // for KBDLLHOOKSTRUCT

  #include // MFC core and standard components

  #define DLLEXPORT __declspec(dllexport)

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

  // App (DLL) object

  //

  class CTaskKeyHookDll : public CWinApp {

  public:

  CTaskKeyHookDll() { }

  ~CTaskKeyHookDll() { }

  } MyDll;

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

  // 下面的代码表示这一部分在此DLL所有实例之间共享

  // 低级键盘钩子一定是系统级的钩子

  //

  #pragma data_seg (".mydata")

  HHOOK g_hHookKbdLL = NULL; // 钩子句柄

  BOOL g_bBeep = FALSE; // 按下非法键时蜂鸣响铃

  #pragma data_seg ()

  #pragma comment(linker, "/SECTION:.mydata,RWS") // 告诉链接器:建立数据共享段

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

  // 低级键盘钩子

  // 截获任务转换键:不传递直接返回

  //

  LRESULT CALLBACK MyTaskKeyHookLL(int nCode, WPARAM wp, LPARAM lp)

  {

  KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *) lp;

  if (nCode==HC_ACTION) {

  BOOL bCtrlKeyDown =

  GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);

  if ((pkh->vkCode==VK_ESCAPE && bCtrlKeyDown) || // Ctrl+Esc

  // Alt+TAB

  (pkh->vkCode==VK_TAB && pkh->flags & LLKHF_ALTDOWN) ||

  // Alt+Esc

  (pkh->vkCode==VK_ESCAPE && pkh->flags & LLKHF_ALTDOWN)||

  (pkh->vkCode==VK_LWIN || pkh->vkCode==VK_RWIN)) { // 开始菜单

  if (g_bBeep && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))

  MessageBeep(0); // 蜂鸣

  return 1; // 不再往CallNextHookEx传递,直接返回

  }

  }

  return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);

上一页  [1] [2] [3] [4] [5]  下一页


Tag:电脑常识电脑常识大全电脑教程 - 电脑常识