Jeff Leonard Asked: 2009-07-23 06:07:29 +0800 CST2009-07-23 06:07:29 +0800 CST 2009-07-23 06:07:29 +0800 CST 单独限制用户在 Windows 计算机上运行某些程序 772 我有一个用户在工作中整天玩游戏,我想单独控制他是否以及何时能够运行他的游戏。 有没有办法为程序何时允许运行和何时不允许运行设置时间表? windows 7 个回答 Voted Evan Anderson 2009-07-23T08:03:47+08:002009-07-23T08:03:47+08:00 我会权衡答案,但我也会回应评论中所说的话。这是一个可怕的想法。你有一个管理问题,而不是技术问题。虽然我知道你的“老板”要求你为他们解决他们的问题,但我认为你需要让他们知道这个问题没有技术解决方案。 您正在查看的 Microsoft 解决方案是Software Restriction Policies。您可以定义各种标准来允许/禁止程序执行。 以“允许一切,阻止异常”模式(微软称为“无限制模式”)运行将无济于事。用户可以重命名文件或复制文件,并在末尾附加一个垃圾字节以消除加密哈希。 在“不允许的模式”中,只允许明确允许的程序或路径运行,软件限制策略确实有效。(需要注意的是,如果用户具有“管理员”权限,那么无论您如何配置它,您试图阻止他们的尝试都是无效的。)对于非管理员用户和“不允许模式”中的一些定义良好的路径(路径用户无法写入文件的地方)您可以出色地完成使 Windows XP 防止未经授权的软件运行的工作。 显然,作为“全部拒绝,允许显式”架构意味着设置它需要更多的工作,但“胜利”是它确实可以阻止几乎所有不需要的软件在计算机上运行(甚至是“存在”在用户文件夹中的软件)有权写信——例如,谷歌浏览器的一个技巧)。 我怎么强调都不过分,你试图用技术手段解决管理问题。这是浪费时间、浪费精力和制造比你“解决”更多的问题的秘诀。除非您在不允许的模式下执行非常激烈的操作,例如软件限制策略(并剥夺用户的管理员权限),否则您将一事无成。如果您确实采取了如此严厉的措施,那么您最终将花费的时间和金钱比管理层只是“男人起来”(或“女人起来”,视情况而定)并完成他们的工作所花费的时间和金钱要多得多。 Best Answer user13846 2009-07-23T06:27:46+08:002009-07-23T06:27:46+08:00 不久前,我与网络上的某个人遇到了这个确切的问题。 为了在核心时间控制这种行为,我编写了下面的脚本。通过在 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 我希望这个对你有用 Sean Earp 2009-07-23T08:20:09+08:002009-07-23T08:20:09+08:00 对所有“这是人的问题,而不是技术问题”的评论 +1。 但是...如果必须,这将是使用Sysinternal 的 PsTools的好地方。您可以使用PsList显示远程框上正在运行的进程,并使用 PsKill远程终止游戏进程。 David Yu 2009-07-23T08:50:01+08:002009-07-23T08:50:01+08:00 来自 sysinternals 的PSKILL将允许您远程终止进程。您可以在系统上设置一个 .cmd 并将其放入任务调度程序中,以每 5、10 或 15 分钟执行一次。 Ward - Reinstate Monica 2009-07-23T09:02:19+08:002009-07-23T09:02:19+08:00 如果管理层不按他们应该的方式处理这个问题,那么告诉他们是的,你可以处理它,但不能像限制他们何时可以玩游戏那样半途而废。从长远来看,小心翼翼地解决问题不会有帮助。 我会删除或重命名可执行文件。如果它是扫雷或心脏或类似的东西,你应该完成。如果这是他们自己安装的游戏,请提醒他们不要在公司计算机上安装自己的软件。如有必要,删除他们的管理员访问权限。 Dennis Williamson 2009-07-23T10:39:21+08:002009-07-23T10:39:21+08:00 我会通过记录您被要求做的事情、由谁、何时以及您为实施它而采取的步骤以及任何其他相关的沟通或行动/反应来记录 CYA。 Nasa 2009-08-04T06:19:02+08:002009-08-04T06:19:02+08:00 使用 GPO 并实施软件限制策略。不幸的是,它要么关闭,要么打开。使用 taskkill 不会阻止用户再次启动应用程序。
我会权衡答案,但我也会回应评论中所说的话。这是一个可怕的想法。你有一个管理问题,而不是技术问题。虽然我知道你的“老板”要求你为他们解决他们的问题,但我认为你需要让他们知道这个问题没有技术解决方案。
您正在查看的 Microsoft 解决方案是Software Restriction Policies。您可以定义各种标准来允许/禁止程序执行。
以“允许一切,阻止异常”模式(微软称为“无限制模式”)运行将无济于事。用户可以重命名文件或复制文件,并在末尾附加一个垃圾字节以消除加密哈希。
在“不允许的模式”中,只允许明确允许的程序或路径运行,软件限制策略确实有效。(需要注意的是,如果用户具有“管理员”权限,那么无论您如何配置它,您试图阻止他们的尝试都是无效的。)对于非管理员用户和“不允许模式”中的一些定义良好的路径(路径用户无法写入文件的地方)您可以出色地完成使 Windows XP 防止未经授权的软件运行的工作。
显然,作为“全部拒绝,允许显式”架构意味着设置它需要更多的工作,但“胜利”是它确实可以阻止几乎所有不需要的软件在计算机上运行(甚至是“存在”在用户文件夹中的软件)有权写信——例如,谷歌浏览器的一个技巧)。
我怎么强调都不过分,你试图用技术手段解决管理问题。这是浪费时间、浪费精力和制造比你“解决”更多的问题的秘诀。除非您在不允许的模式下执行非常激烈的操作,例如软件限制策略(并剥夺用户的管理员权限),否则您将一事无成。如果您确实采取了如此严厉的措施,那么您最终将花费的时间和金钱比管理层只是“男人起来”(或“女人起来”,视情况而定)并完成他们的工作所花费的时间和金钱要多得多。
不久前,我与网络上的某个人遇到了这个确切的问题。
为了在核心时间控制这种行为,我编写了下面的脚本。通过在 Cygwin shell 中使用 Windows 中的已调度任务运行它,您可以在您选择时运行它,并让调度程序在您希望用户的程序重新开始工作时终止该作业。这在 unix 机器上不起作用,因为这是一个使用 windows 命令和 BASH shell 脚本的混合脚本。另外值得注意的是,如果您想避免使用 Windows 调度程序,可以在 cygwin shell 中将其设置为 CRON 作业。
先决条件
1) Cygwin 加载到您控制的系统上,该系统与用户位于同一网络上。(我为此使用了我的管理系统,因为我已经有 Cygwin) 2)在运行软件的系统上具有管理权限的用户帐户。
背景
我建议不要使用域管理员帐户或本地管理员,因为如果您的脚本被泄露,它将暴露您的管理员密码。创建一个离散的探测本地帐户。我建议使用听起来像是来自计算机供应商的一种。
脚本的详细分解
在此示例中,HQ-WS-599 是用户所在的工作站 hpassistant 是我在此用户系统上创建的本地用户帐户,/P 引用帐户密码。warcraft.exe 和代码下面列出的两个是我决定限制的三个程序。sleepytime 变量决定了它尝试通过网络访问并终止您定义的进程的频率。
它是如何工作的?
当我开始使用这个脚本时,我发现它运行起来非常棒。即使是非常精通技术的用户也很难弄清楚这一点。如果没有嗅探器或其他有洞察力的工具,除了进程在没有通知的情况下自发消失之外,您不会看到任何迹象表明它正在运行。
现在进入脚本...
我希望这个对你有用
对所有“这是人的问题,而不是技术问题”的评论 +1。
但是...如果必须,这将是使用Sysinternal 的 PsTools的好地方。您可以使用PsList显示远程框上正在运行的进程,并使用 PsKill远程终止游戏进程。
来自 sysinternals 的PSKILL将允许您远程终止进程。您可以在系统上设置一个 .cmd 并将其放入任务调度程序中,以每 5、10 或 15 分钟执行一次。
如果管理层不按他们应该的方式处理这个问题,那么告诉他们是的,你可以处理它,但不能像限制他们何时可以玩游戏那样半途而废。从长远来看,小心翼翼地解决问题不会有帮助。
我会删除或重命名可执行文件。如果它是扫雷或心脏或类似的东西,你应该完成。如果这是他们自己安装的游戏,请提醒他们不要在公司计算机上安装自己的软件。如有必要,删除他们的管理员访问权限。
我会通过记录您被要求做的事情、由谁、何时以及您为实施它而采取的步骤以及任何其他相关的沟通或行动/反应来记录 CYA。
使用 GPO 并实施软件限制策略。不幸的是,它要么关闭,要么打开。使用 taskkill 不会阻止用户再次启动应用程序。