严格限制用户在 Windows 计算机上运行某些程序

严格限制用户在 Windows 计算机上运行某些程序

我有一个用户在工作时整天玩游戏,我想秘密控制他是否以及何时能够运行他的游戏。

有没有办法设置一个时间表来规定何时允许程序运行以及何时不允许程序运行?

答案1

不久前,我和网络上的某人也遇到过同样的问题。

为了在核心时间控制这种行为,我编写了以下脚本。通过在 Cygwin shell 中运行此脚本,并在 Windows 中安排任务,您可以让它在您选择的任何时间运行,并让调度程序在您希望用户的程序重新开始工作时终止该作业。这在 unix 机器上不起作用,因为这是一个使用 Windows 命令和 BASH shell 脚本的混合脚本。同样值得注意的是,如果您想避免使用 Windows 调度程序,您可以在 cygwin shell 中将其设置为 CRON 作业。

先决条件
1) Cygwin 加载到您控制的与用户位于同一网络上的系统上。(我为此使用了管理系统,因为我已经有了 Cygwin)2) 在运行该软件的系统上具有管理权限的用户帐户。

背景
我建议不要使用域管理员帐户或本地管理员帐户,因为如果您的脚本被泄露,它将暴露您的管理员密码。创建一个听起来独立的本地帐户。我建议使用听起来像来自计算机供应商的帐户。

剧本详细分析
在此示例中,HQ-WS-599 是用户所在的工作站,hpassistant 是我在此用户系统上创建的本地用户帐户,/P 引用帐户密码。warcraft.exe 和代码中列出的两个程序是我决定限制的三个程序。sleepytime 变量确定它尝试通过网络访问并终止您定义的进程的频率。

它是如何工作的?
当我开始使用这个脚本时,我发现它工作得非常好。即使是技术极其娴熟的用户也很难弄清楚这一点。如果没有嗅探器或其他有洞察力的工具,你不会看到它运行的任何证据,除了进程在没有通知的情况下自发消失。

现在开始脚本...

#!/usr/bin/bash

var0=1
LIMIT=1
SleepyTime=45

while [ "$var0" -eq "$LIMIT" ]
#      ^                    ^
# Spaces, because these are "test-brackets" . . .
do
  taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "warcraft.exe"
  taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "solataire.exe"
  taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "freecell.exe"

  #             ^           Space, to separate printed out numbers.

  # var0=`expr $var0 + 1`   # var0=$(($var0+1))  also works.
                          # var0=$((var0 + 1)) also works.
                          # let "var0 += 1"    also works.
  sleep $SleepyTime
done                      # Various other methods also work.

echo

exit 0

我希望你觉得这有帮助

答案2

我会给出答案,但我也会重复评论中所说的话。这是一个糟糕的想法。你有一个管理问题,而不是技术问题。虽然我理解你的“老板”要求你解决他们的对他们来说这是一个难题,我认为你需要让他们知道这个问题没有技术解决方案。

微软针对您所看到的问题的解决方案是软件限制策略. 您可以定义各种标准来允许/禁止程序执行。

在其“允许一切,阻止例外”模式(微软称之为“不受限制模式”)下运行不会有帮助。用户可以重命名文件或复制文件,并在末尾附加一个字节的垃圾来摆脱加密哈希。

在“不允许模式”下,只有明确允许的程序或路径才允许运行,软件限制策略确实很有效。(但要注意的是,如果用户拥有“管理员”权限,那么无论您如何配置,阻止他们的尝试都将毫无用处。)使用非管理员用户和“不允许模式”下的一些明确定义的路径(用户无法写入文件的路径),您可以出色地让 Windows XP 阻止未经授权的软件运行。

显然,采用“拒绝所有,明确允许”的架构意味着需要做更多的工作来进行设置,但其“优势”在于它确实可以阻止几乎所有不需要的软件在计算机上运行(即使是“驻留”在用户有写入权限的文件夹中的软件 - 例如,Google Chrome 就使用这种技巧)。

我再怎么强调也不为过,您正试图用技术手段解决管理问题。这是浪费时间、浪费精力和制造更多问题的方法,而不是您“解决”的问题。除非您采取非常激烈的措施,例如在“不允许”模式下使用软件限制策略(并剥夺用户的管理员权限),否则您不会取得任何进展。如果您真的采取了如此激烈的措施,您最终将花费比管理层“像个男人”(或“像个女人”,视情况而定)并做好工作时更多的时间和金钱。

答案3

对所有“这是人的问题,而不是技术问题”的评论 +1。

但是...如果你必须这么做,那么这里将是一个很好的地方Sysinternal 的 PsTools. 你可以使用列表显示远程机器上正在运行的进程,以及杀毒软件远程终止游戏进程。

答案4

如果管理层不按其应有的方式处理这个问题,那么告诉他们,是的,你可以处理这个问题,但不要半心半意地限制他们玩游戏的时间。从长远来看,小心翼翼地处理这个问题不会有帮助。

我会删除或重命名可执行文件。如果是扫雷或红心大战之类的游戏,那么就大功告成了。如果是他们自己安装的游戏,请提醒他们不要在公司电脑上安装自己的软件。如有必要,删除他们的管理员权限。

相关内容