我有一个整天在玩游戏的用户,我想分散地控制他是否能够运行游戏。
有没有办法设置程序何时运行,何时不允许运行?
我在networking上遇到了一个确切的问题。
为了在核心时间控制这种行为,我写了下面的脚本。 通过在Windows中使用Cygwin shell执行这个任务,你可以在任何时候让它运行,并且当你希望用户的程序再次开始工作时,调度程序就会终止这个任务。 这不适用于unix框,因为这是一个使用windows命令和BASH shell脚本的混合脚本。 另外值得注意的是,如果你想避免使用Windows调度器,你可以将它设置为cygwin shell中的CRON作业。
先决条件
1)Cygwin加载在您控制在与用户相同的networking上的系统上。 (我用我的pipe理系统,因为我已经有Cygwin)2)一个用户帐户与pipe理软件正在运行的系统。
背景
我build议不要使用域或本地pipe理员的pipe理员帐户,就好像您的脚本受到攻击一样,这会暴露您的pipe理员密码。 创build一个离散的声音本地帐户。 我build议使用一个听起来像是从计算机供应商。
脚本的细节分解
在这个例子中,HQ-WS-599是用户在hpassistant上的工作站是我在这个用户系统上创build的本地用户帐户,而/ P引用了帐户密码。 warcraft.exe和下面列出的两个代码是我决定限制的三个程序。 hibernate时间variables确定尝试跨越networking的频率,并终止您定义的过程。
它是如何工作的?
当我开始使用这个脚本时,我发现它像冠军一样工作。 即使是非常技术精湛的用户也很难搞清楚这一点。 没有嗅探器或其他有见识的工具,除了没有通知而自发地离开的过程之外,您将看不到任何证据。
现在到脚本…
#!/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
我希望你觉得这有用
我会考虑一个答案,但我也会回应评论中所说的话。 这是一个可怕的想法。 你有一个pipe理问题,而不是技术问题。 虽然我知道你的“老板”要求你为他们解决问题,但我认为你需要让他们知道,这个问题没有技术解决scheme。
您正在查看的Microsoft解决scheme是软件限制策略 。 您可以定义各种标准以允许/禁止程序执行。
运行在“允许所有,阻止例外”模式(称为“无限制模式”由微软)将无济于事。 用户可以重新命名文件,或者在最后添加一个垃圾字节来复制它们,以抛弃encryption哈希。
在“禁止模式”中,只有明确允许的程序或path才允许运行,软件限制策略确实有其优势。 (需要注意的是,如果用户拥有“pipe理员”权限,则无论您如何configuration,您尝试停止这些权限都是无法实现的。)使用非pipe理员用户和一些定义良好的“禁止模式”path用户不能写文件的地方),你可以做一个很好的工作,使Windows XP防止未经授权的软件运行。
显然,“否认所有,允许明确”的架构意味着更多的工作设置,但“胜利”是,它几乎可以保持所有不需要的软件在计算机上工作(甚至软件“活在”文件夹中的用户有权写信给 – 例如谷歌Chrome的一个窍门)。
我不能强调你用技术手段来解决pipe理问题。 这是一个浪费时间,浪费精力,创造更多问题而不是解决问题的方法。 除非您在“禁止”模式下执行软件限制策略等非常激烈的操作(并剥夺用户的pipe理员权限),否则您将无法获得任何地方。 如果确实采取这种激烈的措施,那么最终花费的时间和金钱就会比pipe理层只要“正式”(或者“女性化”)(视情况而定)所花费的时间和金钱多得多。
对所有的“这是一个人的问题,而不是技术问题”的评论+1。
但是,如果你必须的话,这将是一个使用Sysinternal的PsTools的好地方。 你可以使用PsList在远程盒子上显示正在运行的进程, PsKill可以远程杀死游戏进程。
来自sysinternals的PSKILL将允许您远程杀死进程。 您可以在您的系统上设置.cmd,并将其放入任务计划程序中,以每5,10或15分钟执行一次。
如果pipe理层没有按照他们的意思去处理这个问题,那就告诉他们,是的,你可以照顾它,但不要半途而废,就像限制他们玩游戏一样。 从问题的angular度来看,从长远来看,这无济于事。
我会删除或重命名可执行文件。 如果是扫雷艇或者心灵之类的东西,你应该做。 如果是自己安装的游戏,有时会提醒他们不要在公司电脑上安装自己的软件。 如有必要,删除他们的pipe理员访问
我会通过logging你被要求做的事情,由谁,何时以及你采取什么步骤来实施它,以及任何其他相关的沟通或行动/反应。
使用GPO并实施软件限制策略。 不幸的是,它不是closures就是closures。 使用taskkill不会阻止用户再次启动应用程序。