2

我正在尝试在 autohotkey 中构建一个脚本,这将使我自己和抽认卡程序 Anki 的其他用户在学习过程中途退出时感到烦恼。

到目前为止,我已经写了以下内容

InputBox, TimeMin, ATTENTION, Enter how long would you like to commit to answering flashcards in minutes.
TimeMili:=TimeMin*60*1000
SetTimer, Meh, %TimeMili%
a:=0
While a < 1
{
IfWinActive User 1 - Anki
    {
    MouseMove,1298, 981
    WinKill Task Manager
    WinMaximize User 1 - Anki
    }
    Else
    {
        WinKill Task Manager
        IfWinExist User 1 - Anki 
            {
            WinActivate User 1 - Anki
            MouseMove,1298, 981
            }
    }
}
return

!F4::
MouseMove 350,350
return

Meh:
MsgBox WELL DONE U R NOW FREE
SetTimer,,OFF
a:=10
Return

Lwin::
Return

Rwin::
Return

此脚本禁用 alt + f4,杀死 taskmanager,在最小化时最大化 anki 窗口,并在用户定义的分钟数内防止鼠标靠近程序窗口外部的红色退出按钮。由于 anki 可以在不使用鼠标的情况下进行导航,因此可以选择性地阻止拖延行为而不影响学习。

该脚本运行良好,但可以通过重新启动计算机或通过控制 alt delete 缓慢注销(win + L 不会终止脚本)来克服它。控制 alt delete 在现代 Windows 版本中很难禁用,可能是作为恶意软件预防保护措施。

我建议的解决方案是让脚本在激活时执行一些烦人的操作(例如删除所有桌面快捷方式),并在用户定义的时间段终止时撤消相同的操作。我相信如果用户注销/关闭/重新启动/缓慢注销,这将使烦人的操作无法解决。

我考虑过使用该脚本在启动文件夹中创建另一个烦人的脚本,但这可以通过注销而不是重新启动/关闭来规避。

只有当用户有很多键盘快捷键时,重命名/删除键盘快捷键才会令人讨厌。

在桌面和其他文件夹上创建大量文本文件太容易逆转,用户可以忽略,直到他们完成拖延

禁用互联网会很好,但它仍然会使离线分心(例如视频游戏)可用。

如何最好地设计这样一个动作,该动作将暂时禁用一台微不足道且可靠但又耗时且难以撤消的 PC?

4

1 回答 1

3

虽然您的 AutoHotkey 解决方案是劝阻人们退出程序的巧妙方法,但您永远不会获得真正 100% 坚如磐石的解决方案,原因如下:您正在使用允许做某事的用户登录。如果你能做一些事情,你和其他人会想出一个聪明的方法来做这件事,,就像 AutoHotkey 一样神奇,它不能禁用拔掉电源线。

另一方面,是的,你可以让规避保护措施的惩罚越来越痛苦(直到倒数第二个format c:核选项,我会保证 99% 的合规性),但你总是会遇到问题,但你还是赢了没有得到遵守。

更好的解决方案是使用通过组/本地安全策略嵌入 Windows 的功能,这些功能限制事物。通过使用具有锁定权限的特殊用户,他们实际上将无法执行某些操作,因为他们不能(例如,您可以禁用开始菜单、电源选项、站点等)。

真的想将事情锁定在一个应用程序中吗?好吧,Windows 有一种特殊的Kiosk 模式,您实际上只能 - 运行一个应用程序,无论如何您都无法摆脱它。从删除退出选项从 Ctrl-Alt-Delete 到删除任务管理器,可以应用许多特殊的Kiosk 策略。

于 2019-08-08T21:59:40.077 回答