项目类似网吧的开机锁机应用。开机自动启动,锁定客户端键盘,锁定屏幕窗口,用户无法操作电脑,当输入正确的用户和密码,程序退出。 原项目为内网考勤使用,现在开源部分主要功能。
- 窗口锁定主要实现方式:electron中window最上部,无边框,全屏,定时检查最小化等状态。
- 键盘锁定采用c++ 使用windows底层钩子,屏蔽所有系统快捷键。
- 开机启动使用electron自带自启模块。
屏幕锁定基于 Electron-react-boilerplate, 采用技术 Electron, React, React Router, Webpack 和 React Fast Refresh.
各位小伙伴如果觉得文章不错的话,欢迎star :https://github.com/Mad-hu/ScreenLock
摘要
屏幕锁定应用包含功能:屏幕锁定、快捷键锁定、应用自启动
- 屏幕锁定
- 快捷键锁定
- Alt + Tab
- Alt + F4
- Ctrl + Alt + delete
- …
- 应用自启动
功能 | MacOS | Windows | |
---|---|---|---|
屏幕锁定 | ✅ | ✅ | |
快捷键锁定 | ❌ | ✅ | |
应用自启动 | ✅ | ✅ |
安装
首先,克隆项目到本地并安装依赖:
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
Demo演示
License
MIT ©