又一次的疫情来袭,孩子们又开始转向线上学习。疫情的零星扩散,看样子一下子也找不到根除的方法,孩子上网课估计以后会成为新常态。孩子上网课,家长也不可能一直监督陪着。面对网上的诸多诱惑,指望孩子一心上课,有点难。为了应对这种状况,作为程序员的我,不得不使出浑身的解数,采用各种技术手段进行限制。
我首先想到的手段是通过 Windows 防火墙进行限制,只允许上网课的应用程序联网。但这个方法没奏效多久,孩子也不知道哪里查到的方法,直接将 Windows 防火墙给关闭,这种方法宣告失败。
接下来,我想到另外一种方案:只让运行指定的应用程序。这在 Linux 系统下很容易实现,然而在 Windows 下却挺复杂。经过查找资料、尝试,终于找到终极解决方法,下面以 Windows 11 家庭版操作系统为例,说明具体的操作步骤。理论上 Windows 10 系统也可行,只是某些界面可能稍有差别。
言归正传,下面就详述操作步骤。
添加 Windows 账号
添加账号的目的是让孩子只使用权限受限的账号,家长掌握管理员账号,这样即使孩子掌握了修改方法,也会由于权限,无法得逞。
- 依次点击 Windows 开始 -> 设置 -> 账户 -> 家庭和其他用户。
2. 点击 其他用户 下的 添加账户 按钮。
3. 点击 我没有这个人的登录信息 。
4. 点击 添加一个没有 Microsoft 账户的用户。
5. 依次输入用户名、密码和提示问题后,点击下一步。
6. 用户创建成功后,将会在其他用户下显示出来。
7. 重启系统,选择刚刚创建的用户(此处是alex,请使用你之前创建的用户名)登录。
到此,新账户的创建就已经完成。现在 Windows 系统至少有两个账户,一个是管理员账户(就是在创建新账户之前登录的那个账户),一个是普通账户(新创建的那个账户)。
修改注册表,只允许指定程序能运行
1. 注销当前用户,然后再选择你的管理员账号登录。
2. 点击 Windows 开始,在搜索框中输入 command,然后选择命令提示符,然后点击以管理员身份运行。
3. 在命令提示符中输入:
reg load HKUalex c:Usersalexntuser.dat
注:将上面命令行中的 alex 替换成你之前创建的用户名。
接着输入:
regedit
打开注册表。
4. 依次展开注册表左侧的树节点(注:alex 替换为创建的用户名):
计算机HKEY_USERSalexSoftwareMicrosoftWindowsCurrentVersionPolicies
5. 找到 Policies 下的 Explorer 节点,鼠标右键点击,然后依次 新建 ->DWORD(32 位)
6. 将名称修改为 RestrictRun,双击,然后将值修改为1.
7. 右键点击 Explorer,依次点击 新建 -> 项。
8. 将名称修改为 RestrictRun。
9. 右键点击 RestrictRun 节点,依次点击 新建 -> 字符串值。
10. 在数值数据栏输入允许运行的程序名,比如孩子上网课用的腾讯会议的程序名就是 wemeetapp.exe,然后点击确定。
如何查找程序名?可以采用以下的方法。在桌面上找到应用程序的图标,然后鼠标右键点击,再点击属性。
对话框的目标栏,指向的就是应用程序名,只用复制路径后面的文件名。
11. 添加成功后,可以在 RestrictRun 节点下看到。
如果还有其他的应用程序允许孩子用,比如可能需要 QQ 传作业,可以重复步骤 9 和 10。
试试效果
使用新创建的用户登录,如果点击不在上述列表中的app,比如 Edge 浏览器,就会弹出如下提示框:
如果要关闭对应用程序的限制,只需找到前面添加的 RestrictRun 值,修改为 0 即可。
小结
上面的步骤看起来有些繁琐,主要在于创建了一个新的账户。如果在现有账户上操作,会简单很多。问题是如果家长去上班,将 Windows 账户密码告诉了孩子,有了管理员账号,就没法限制孩子修改设置。
创建一个新账户给孩子,家长掌握了管理员账户,这样孩子既没法安装应用程序,也没法使用列表之外的程序,可以有效防止孩子在上课的时候上网,玩网页游戏。即使孩子掌握了上面的方法,因为没有权限,也无法修改。
大家还有什么好的方法,或者上述方法还有什么遗漏之处,欢迎讨论。