项目类似网吧的开机锁机应用。开机自动启动,锁定客户端键盘,锁定屏幕窗口,用户无法操作电脑,当输入正确的用户和密码,程序退出。 原项目为内网考勤使用,现在开源部分主要功能。
  • 窗口锁定主要实现方式:electron中window最上部,无边框,全屏,定时检查最小化等状态。
  • 键盘锁定采用c++ 使用windows底层钩子,屏蔽所有系统快捷键。
  • 开机启动使用electron自带自启模块。

屏幕锁定基于 Electron-react-boilerplate, 采用技术 Electron, React, React Router, WebpackReact Fast Refresh.


各位小伙伴如果觉得文章不错的话,欢迎star :https://github.com/Mad-hu/ScreenLock

摘要

屏幕锁定应用包含功能:屏幕锁定、快捷键锁定、应用自启动

  • 屏幕锁定
  • 快捷键锁定
    • Alt + Tab
    • Alt + F4
    • Ctrl + Alt + delete
  • 应用自启动
功能MacOSWindows
屏幕锁定
快捷键锁定
应用自启动

安装

首先,克隆项目到本地并安装依赖:

git clone https://github.com/Mad-hu/ScreenLock.git
cd ScreenLock
yarn

文件结构

  • .erb: 项目配置
  • assets: 应用的icon等
  • screenlock-node: screenlock.node的c++项目,有需要的可以自己构建
  • src: 基础项目

启动

启动dev环境:

yarn start

打包正式环境

打包一个本地的app:

yarn package

开机启动,!很重要

在 package.json中找到electron builder的配置项目,添加下边的配置。其中requestedExecutionLevel最重要。

"win": {
      "requestedExecutionLevel": "highestAvailable", // is require
      "target": [
        {
          "target": "nsis"
        }
      ]
    }

如果你想要开机启动,并且能够屏蔽系统快捷键(Ctrl + Alt + delete) 的话,不仅要修改上边的配置,还要修改系统UAC的配置,单项配置不讲,这里提供reg脚本,直接用。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
"EnableLUA"=dword:00000000
"EnableUIADesktopToggle"=dword:00000000
"PromptOnSecureDesktop"=dword:00000000
"ValidateAdminCodeSignatures"=dword:00000000
"FilterAdministratorToken"=dword:00000000

系统兼容

Electron兼容的系统版本都OK

已知问题

屏幕锁定客户端已在生产环境安装至少5000台不同windows版本的机器,从windows7 base home-windows10 20H2,现抽离业务保留主要功能进行开源,也是希望大家能够提供更多的使用方法解决现有问题和完善应用。

  • 1、暂时没有实现mac上快捷键锁定。
  • 注意:以下问题在采用electron自带的启动方式不会出现。即在\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run位置添加启动项。在采用其他方式启动时会导致下面2-8的问题。
  • 2、windows与部分常驻内存应用冲突,导致无法关机,例如:某些软件破解程序。
  • 3、windows与其他启动方式冲突,导致无法开机,例如:部分杀毒软件会拦截。
  • 4、使用计划任务实现自启动,大部分会卡死系统。
  • 5、在注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run下添加启动,会导致1/500概率无法开关机,导致问题见2-3。
  • 6、在注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
    NT\CurrentVersion\Winlogon下Userinit、Shell键值也会有自启动的程序,会导致无法进入系统桌面。
  • 7、注册windows服务,无法启动。
  • 8、大部分无法开机,一部分是因为与某些应用产生冲突造成的,大部分是由于客户端启动后,锁定winlogon.exe造成的无法启动、关机、黑屏等问题。

参阅文章

各位小伙伴如果觉得文章不错的话,欢迎star :

https://github.com/Mad-hu/ScreenLock

项目支持github

Mad-hu

Demo演示

Demo

License

MIT ©

更多推荐