启动脚本+本地系统用户=没有function程序的用户界面

我目前有一个组策略启动脚本(CMD文件)。 它按照预期在启动过程中运行,但脚本调用的程序没有UI。

举例来说,让我们说我有这个命令作为我的启动脚本:

rundll32 shell32.dll,ShellExec_RunDLL "C:\Windows\System32\notepad.exe" echo foo > C:\foo.txt 

^这将调用“记事本”来运行,并将输出写入文本文件(foo.txt)。 很简单。 当组策略运行此脚本时,会生成文本文件,并且记事本正在运行。 问题是记事本没有用户界面。 我可以告诉它的唯一方法是通过任务pipe理器/进程。 我已经validation了它的工作,但是我需要记事本在运行时显示在我的任务栏中。

…根据TechNet /微软在这里: 分配计算机启动脚本W /微软

启动脚本作为本地系统运行,并且具有与作为本地系统运行相关的全部权限。

我的问题是,我真的需要记事本程序用户界面来显示,似乎无法使其在“本地系统”下运行时发生这种情况。

  1. 有没有办法让我的启动脚本以pipe理员身份运行? 或者有没有办法让本地系统用户有足够的专业知识充分运行记事本?
  2. 我是否需要将我的CMD脚本更改为“以另一用户身份运行”?
  3. 我应该排定计划任务的组策略吗? 计划任务更容易设置。 这似乎是对我的折腾?

我想指出,我也尝试了“控制面板/pipe理工具”下的“计划任务”。 我有相同的结果和相同的情况下,我的脚本成功运行,但从不显示记事本用户界面。 我也接受使用任务计划程序的build议,或者不同的方法。 谢谢!

让UI显示将是一个真正的痛苦。

首先,我会考虑将这些程序包装在一个服务包装中(例如Non-Sucking Service Manager ),并让Service Control Manager在启动时启动它们。 从您的评论的声音,这些程序真的应该编码为Windows服务无论如何。 (我希望软件供应商停止编写非服务“服务”程序,这些服务需要我的服务器进行login等等。例如,蹩脚的时钟轮询程序似乎都是这样的。

这不能解决你的用户界面问题。 你不会得到一个GUI界面来在Windows Server 2008的Winlogon之上启动,而不需要“帮助”程序。 您可以通过Windows Server 2003中的“启动脚本”来运行程序,以在Winlogon上显示其UI。 要做这样的事情,现在你需要创build一个Winlogon令牌副本,并为Winlogon桌面设置桌面。

您可以通过允许服务包装的程序与桌面进行交互来使用户界面loginpopup。 也许。 你也可能把自己暴露在“粉碎”的攻击之中。

如果这些是内部程序,你应该考虑改变它们,使它们像真正的服务程序一样工作。 pipe理用户界面应通过RPC机制与后端服务进程通信。 通过TCP / IP来做到这一点,作为奖励,您可以在其他机器上运行pipe理程序。 您的单一服务和用户界面在一起的方法不会给你最好的结果。

您是否尝试过“在用户login时运行这些程序”GPO设置?

http://support.microsoft.com/kb/314488