• Windows7、10的热键屏蔽


    最近有需求 在使用本软件的时候 防止一些操作,需要屏蔽系统的快捷键,于是简单整理了下实现方式

    一、 hook技术的使用

    hook技术:Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,

    还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
      要实现钩子函数,有两个步骤:
      1. 利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)
      2.动态代理(使用所有场景)

    通过使用Hook技术可以加载低级键盘钩子来截获大部分的系统热键,并屏蔽它。这个方法比较简单,但有个缺陷,那就是对Ctrl+Alt+Del,Win+L没用。 

    原因:Winlogon初始化的时候,在系统中注册了Ctrl+Alt+Del Secure Attention Sequence(SAS)热键,并且在WinSta0 Windows 系统中创建三个桌面。SAS热键的注册使得Winlogon成为第一个处理CTRL+ALT+DEL的进程,所以保证了没有其他应用程序能够处理这个热键。

    简单来说,就是这个热键的级别太高,不会经过我们的钩子链。所以接下我们的讨论重点在于如何屏蔽Ctrl+Alt+Del,Win+L。主要是以下方式(两种方式都需要管理员权限):

    1、修改注册表

    缺点:界面还是存在,只是关闭了打开任务管理器,切换用户等选项;

    优点:可以定制我们的锁定界面,一次修改即可,除非恢复注册表,不然一直生效;

    2、直接挂起winlogon.exe

    缺点:只能通过重新恢复winlogon.exe来恢复热键,在重启机器之后还需要再次运行挂起程序;

    优点:可以屏蔽所有快捷键,并且不会有锁定界面

    二、修改注册表内容

    首先思考我们屏蔽ctrl+alt+del的目的:为了不让用户可以杀死我们的进程,从而直接得到软件内部数据。

    所以我们通过修改注册表也可以达到屏蔽Ctrl+Alt+DelL的效果。

    具体我们要修改的项如下:

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
    "DisableLockWorkstation"=dword:00000001
    "DisableTaskMgr"=dword:00000001
    "DisableChangePassword"=dword:00000001
    "NoConfigPage"=dword:00000000
    "NoDevMgrPage"=dword:00000000
    "DisableSwitchUserOption"=dword:00000001
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
    "NoLogoff"=dword:00000001

    效果:

    这是修改之前的:

     

       

    这是修改之后的:

     

       

    正常情况下,policies子键都存在,如果失败,有两种可能:

    1,没用使用管理员权限运行程序

    2,没有这个子键,需要自行创建Policies

    三、挂起winlogon.exe进程

    首先我们需要知道为什么要挂起winlogon以及为什么挂起winlogon可以达到我们要的屏蔽效果:

    1Winlogon 是负责处理安全相关的用户交互界面的组件。Winlogon的工作包括加载其他用户身份安全组件、提供图形化的登录界面,以及创建用户会话。

    Winlogon在启动时还注册一个系统级别的安全注意序列(默认为Ctrl+Alt+Del)热键,以在在用户键入这个序列的时候切换到安全桌面显示系统安全界面。

    2,所以当我们挂起winlogon时,系统就无法监听ctrl+alt+del,这样,就可以达到屏蔽的效果

    由于winlogon时系统安全级别的进程,要挂起他不仅需要我们取得管理员权限,还要将我们的进程升级到debug级别 

    在将我们的进程提升到debug级别之后,我们需要做的事就是根据winlogon.exe这个进程名找到对应的进程PID也即是进程句柄,然后利用这个句柄去挂起winlogon.exe和恢复winlogon.exe。 

    方案总结

    关于屏蔽window7以及window10热键的方案,我们主要以hook为主,去选择性的屏蔽普通热键,再加上修改注册表或者挂起winlogon的方式去屏蔽系统级别的热键,从而达到保证用户权限对应软件操作的限制。

  • 相关阅读:
    优酷菜单
    下拉列表
    图片循环滑动
    android 官网处理图片 代码
    获取手机内存可用内存单个APP运行内存
    Android中View绘制流程以及invalidate()等相关方法分析
    Andriod中绘(画)图----Canvas的使用详解
    Android中获取应用程序(包)的信息----PackageManager
    android桌面小火箭升空动画
    3、自定义控件-----刮刮奖
  • 原文地址:https://www.cnblogs.com/CSWin/p/13722647.html
Copyright © 2020-2023  润新知