Skip to content

Commit 60bfb23

Browse files
创建安装程序
1 parent 5db5168 commit 60bfb23

4 files changed

Lines changed: 190 additions & 16 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,3 +328,5 @@ ASALocalRun/
328328

329329
# MFractors (Xamarin productivity tool) working folder
330330
.mfractor/
331+
LICENSE.txt
332+
Setup*.exe

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019 神楽坂雅詩
3+
Copyright (c) 2019 KagurazakaYashi
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# MFAScreenLock
1+
# NyarukoMFALock
22

3-
- 锁定 Windows 屏幕,使用手机 MFA 身份验证器提供的每分钟变更的动态验证码进行解锁,防止远程桌面未授权访问。
3+
- 锁定 Windows 桌面,使用 MFA 身份验证器(例如 Google Authenticator )提供的每分钟变更的动态验证码进行解锁,防止远程桌面未授权访问。
44
- 虽然也可用于保护本地计算机,但是由于本地计算机可以直接操作,存在强制绕过的可能,因此在本地计算机中只能用于辅助登录防护。
55

66
## 安装
@@ -9,9 +9,12 @@
99
- `Windows Server ≥ 2008 R2 SP1 (x64)`
1010
- `.NET Framework ≥ 4.6.2`
1111
- 下载: `https://support.microsoft.com/zh-cn/help/3151800/the-net-framework-4-6-2-offline-installer-for-windows`
12-
- 解压缩文件到用户文件夹中。
13-
- 如果你不主动进行文件权限配置,则强烈推荐解压缩到用户文件夹中,防止被其他用户访问到密码文件。
14-
- 运行 `MFAScreenLockApp.exe`
12+
- 如果已经安装旧版本:
13+
- 建议先在旧版本中清除用户设置(同时会解绑验证器),然后卸载旧版本。(升级时非必须,降级时必须)
14+
- 在升级过程中,用户设置和绑定状态可能会被自动清除。
15+
- 安装 `install.exe`
16+
- 如果你不主动进行文件权限配置,则推荐安装到用户文件夹中,防止被其他用户访问到密码文件。
17+
- 运行桌面上创建的快捷方式或安装目录中的 `MFAScreenLockApp.exe`
1518

1619
## 配置
1720

@@ -24,9 +27,9 @@
2427
5. 记下屏幕上显示的恢复代码。
2528
- 点击「是」之后恢复代码将复制到剪贴板,一旦无法使用动态密码,可以使用此恢复代码进入。
2629
- 点击「否」将不产生恢复代码,虽然更安全,但是手机损坏、丢失、验证APP卸载、验证APP数据丢失等情况发生时,将会导致无法登入。
27-
6. 绑定信息将会显示计算机名、用户域和同户名
28-
- 注意:计算机名、用户域和同户名是绑定的,如果修改其中之一将会无法登入。如需修改,请先解绑验证器。
29-
7. 关闭设置窗口或进行「自动锁定设置」
30+
6. 绑定信息将会显示计算机名、用户域和用户名
31+
- **注意:** 计算机名、用户域和用户名是绑定的,如果修改其中之一将会无法登入。如需修改,请先解绑验证器。
32+
7. 关闭设置窗口或进行「锁定设置」和「个性化」外观设置
3033
8. 关闭本程序所有窗口并在状态栏右键选退出程序,将会验证一次密码。
3134
9. 下次开始启动程序时,将进入锁定状态。
3235

@@ -36,20 +39,37 @@
3639
- 可以设置多少分钟后自动锁定。
3740
- 可以看见下方自动锁定计时器,如果它不正常工作请用方法二配置自动锁定。
3841
- 设置窗口在开启状态下,不会触发自动锁定。
39-
2. 方法二:在计划任务中将本程序进行开机启动。
42+
2. 方法二:在计划任务中将本程序进行开机启动。
4043
- 可以在启动参数中加入 `-e` ,程序将在解除锁定后立即退出(否则会驻留图标在状态栏),以便利用计划任务提供的闲置时长功能来进行自动锁定。
4144
- 例如:`MFAScreenLockApp.exe -e`
4245

4346
## 使用
44-
- 下次运行本程序时,计算机画面将被锁定,此时请输入验证器中显示的动态密码,或者恢复代码。
45-
- 如果正确,将直接解锁,无需使用回车键。
46-
- 解锁画面显示的背景图像为你的首选显示器桌面壁纸,不设置桌面壁纸为黑色。
47+
- 下次运行本程序时,计算机画面将被锁定,此时请输入验证器中显示的动态密码,或者恢复代码,按回车。
48+
- 如果正确,将直接解锁。
49+
- 如果不正确,会根据设置,锁定几秒钟(默认为 3 秒),才能继续尝试。
50+
- 解锁画面显示的背景图像为你的首选显示器桌面壁纸,并自动适应屏幕裁剪(填充),不设置桌面壁纸为黑色。
4751
- 文字颜色会根据桌面壁纸自动决定黑色还是白色。
48-
- 其他非首选显示器将显示空白桌面壁纸,不设置桌面壁纸为黑屏。
49-
- 解锁后,会驻留图标在状态栏,右键点击可弹出菜单,可以随时立即上锁、修改绑定,以及退出。
52+
- 其他非首选显示器将显示空白桌面壁纸,不设置桌面壁纸为黑屏。
53+
- 可以在「个性化」设置中修改以上壁纸、颜色和字体设置。
54+
- 解锁后,会驻留图标在状态栏,右键点击可弹出菜单,可以随时立即上锁、修改绑定、变更外观,以及退出。
5055
- 这些菜单项在点击后,会重新进入一次密码输入状态,以验证是本人,之后才继续执行所选择的菜单命令。
56+
- 如果没有驻留图标在状态栏,可能是加入了 `-e` 启动参数或出现了错误。
5157

5258
## 解绑
5359
- 方法1:不加 `-e` 参数运行的情况下,输入密码或恢复代码解锁,在任务栏驻留的图标上点右键,选「绑定管理」,选择「解绑」,然后退出软件。
5460
- 方法2:在程序完全退出的情况下,带 `-r <恢复代码>` 参数启动程序,确认后可直接清除软件所有设置,包括密码。软件将自动退出。
55-
- 例如:`MFAScreenLockApp.exe -r Y8K2V-5J2ZL-F6QC8-ERFJ4-4HME8-POL50`
61+
- 例如:`MFAScreenLockApp.exe -r Y8K2V-5J2ZL-F6QC8-ERFJ4-4HME8-POL50`
62+
63+
## 故障排除
64+
- 无法运行,提示缺少 .NET Framework
65+
- 安装 .NET Framework 运行库。
66+
- 动态密码始终提示密码错误
67+
- 在密码框输入你的恢复代码。
68+
- 进入绑定设置,再次验证你的恢复代码。
69+
- 清除所有用户设置。
70+
- 开机不能自动锁定
71+
- 在程序设置中取消开机启动。
72+
- 完全退出程序,然后「以管理员身份运行」程序。
73+
- 在程序设置中启用开机启动。
74+
- 如果仍然不行:使用「任务计划程序」设置开机启动 或 将程序快捷方式到「启动」文件夹。
75+
- 程序报错: [反馈](issues)

install.nsi

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
; Script generated by the HM NIS Edit Script Wizard.
2+
3+
; HM NIS Edit Wizard helper defines
4+
!define PRODUCT_NAME "NyarukoMFALocker"
5+
!define PRODUCT_VERSION "4.5"
6+
!define PRODUCT_PUBLISHER "KagurazakaYashi"
7+
!define PRODUCT_WEB_SITE "https://github.com/kagurazakayashi/MFAScreenLock"
8+
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\MFAScreenLockApp.exe"
9+
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
10+
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
11+
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
12+
13+
SetCompressor lzma
14+
15+
; MUI 1.67 compatible ------
16+
!include "MUI.nsh"
17+
18+
; MUI Settings
19+
!define MUI_ABORTWARNING
20+
!define MUI_ICON "icons\icon0.ico"
21+
!define MUI_UNICON "MFAScreenLock\MFAScreenLockApp\icon0.ico"
22+
23+
; Welcome page
24+
!insertmacro MUI_PAGE_WELCOME
25+
; License page
26+
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
27+
; Directory page
28+
!insertmacro MUI_PAGE_DIRECTORY
29+
; Start menu page
30+
var ICONS_GROUP
31+
!define MUI_STARTMENUPAGE_NODISABLE
32+
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "NyarukoMFALocker"
33+
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
34+
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
35+
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
36+
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
37+
; Instfiles page
38+
!insertmacro MUI_PAGE_INSTFILES
39+
; Finish page
40+
!define MUI_FINISHPAGE_RUN "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
41+
!define MUI_FINISHPAGE_SHOWREADME "$PROGRAMFILES\NyarukoMFALock\README.md"
42+
!insertmacro MUI_PAGE_FINISH
43+
44+
; Uninstaller pages
45+
!insertmacro MUI_UNPAGE_INSTFILES
46+
47+
; Language files
48+
!insertmacro MUI_LANGUAGE "SimpChinese"
49+
50+
; Reserve files
51+
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
52+
53+
; MUI end ------
54+
55+
Name "${PRODUCT_NAME}"
56+
OutFile "Setup.exe"
57+
InstallDir "$PROGRAMFILES\NyarukoMFALock"
58+
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
59+
ShowInstDetails show
60+
ShowUnInstDetails show
61+
62+
Section "MainSection" SEC01
63+
SetOutPath "$PROGRAMFILES\NyarukoMFALock"
64+
SetOverwrite on
65+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\SysLink.pdb"
66+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\SysLink.dll"
67+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\README.md"
68+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\QRCoder.dll"
69+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\QRCodeEncoderLibrary.xml"
70+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\QRCodeEncoderLibrary.dll"
71+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\MFAScreenLockApp.pdb"
72+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\MFAScreenLockApp.exe.manifest"
73+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\MFAScreenLockApp.exe.config"
74+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\MFAScreenLockApp.exe"
75+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\MFAScreenLockApp.application"
76+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\LICENSE"
77+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\ImageControl.pdb"
78+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\ImageControl.dll"
79+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\Google.Authenticator.pdb"
80+
File "MFAScreenLock\MFAScreenLockApp\bin\Release\Google.Authenticator.dll"
81+
82+
; Shortcuts
83+
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
84+
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
85+
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\NyarukoMFALocker.lnk" "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
86+
CreateShortCut "$DESKTOP\NyarukoMFALocker.lnk" "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
87+
!insertmacro MUI_STARTMENU_WRITE_END
88+
SectionEnd
89+
90+
Section -AdditionalIcons
91+
SetOutPath $INSTDIR
92+
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
93+
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
94+
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
95+
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
96+
!insertmacro MUI_STARTMENU_WRITE_END
97+
SectionEnd
98+
99+
Section -Post
100+
WriteUninstaller "$INSTDIR\uninst.exe"
101+
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
102+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
103+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
104+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
105+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
106+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
107+
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
108+
SectionEnd
109+
110+
111+
Function un.onUninstSuccess
112+
HideWindow
113+
MessageBox MB_ICONINFORMATION|MB_OK "感谢使用,有缘再见。"
114+
FunctionEnd
115+
116+
Function un.onInit
117+
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "真的要卸载 $(^Name) 吗?" IDYES +2
118+
Abort
119+
FunctionEnd
120+
121+
Section Uninstall
122+
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
123+
Delete "$INSTDIR\${PRODUCT_NAME}.url"
124+
Delete "$INSTDIR\uninst.exe"
125+
Delete "$PROGRAMFILES\NyarukoMFALock\Google.Authenticator.dll"
126+
Delete "$PROGRAMFILES\NyarukoMFALock\Google.Authenticator.pdb"
127+
Delete "$PROGRAMFILES\NyarukoMFALock\ImageControl.dll"
128+
Delete "$PROGRAMFILES\NyarukoMFALock\ImageControl.pdb"
129+
Delete "$PROGRAMFILES\NyarukoMFALock\LICENSE"
130+
Delete "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.application"
131+
Delete "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe"
132+
Delete "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe.config"
133+
Delete "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.exe.manifest"
134+
Delete "$PROGRAMFILES\NyarukoMFALock\MFAScreenLockApp.pdb"
135+
Delete "$PROGRAMFILES\NyarukoMFALock\QRCodeEncoderLibrary.dll"
136+
Delete "$PROGRAMFILES\NyarukoMFALock\QRCodeEncoderLibrary.xml"
137+
Delete "$PROGRAMFILES\NyarukoMFALock\QRCoder.dll"
138+
Delete "$PROGRAMFILES\NyarukoMFALock\README.md"
139+
Delete "$PROGRAMFILES\NyarukoMFALock\SysLink.dll"
140+
Delete "$PROGRAMFILES\NyarukoMFALock\SysLink.pdb"
141+
142+
Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
143+
Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
144+
Delete "$DESKTOP\NyarukoMFALocker.lnk"
145+
Delete "$SMPROGRAMS\$ICONS_GROUP\NyarukoMFALocker.lnk"
146+
147+
RMDir "$SMPROGRAMS\$ICONS_GROUP"
148+
149+
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
150+
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
151+
SetAutoClose true
152+
SectionEnd

0 commit comments

Comments
 (0)