1

我正在为持续集成服务器设置一个测试节点。它应执行应用程序的 GUI 测试。因此,它获取生成的安装包并在运行其他交互式测试之前静默安装应用程序。但是有一个问题:UAC。

由于我们不想禁用 UAC 来维护真实的测试环境,因此需要绕过一次来设置应用程序。有很多方法可以做到这一点,一种流行的方法似乎是使用 Windows 任务调度程序。可以将任务添加为普通用户并配置为以管理员身份运行,无需进一步确认。我可以使用该schtasks /create命令,但它的参数不清楚。此外,帮助中的参数值/?似乎在我的系统上被翻译成德语,我相信(并希望)这是一个错误,并且这些值实际上应该用英语指定。

另外,我只想创建一个任务让它立即执行一次,然后删除它并继续我的其他活动(全部在一个批处理文件中)。schtasks 调用会如何?我会从这样的事情开始,但它是不完整的:

schtasks /create /tn "Testaufgabe" /tr "setup.exe" /sc EINMAL /it /np /z /rl /f

PS:哦,我需要等到启动的应用程序完成后才能继续执行其他任务。所以程序调用必须是同步的,而不是在后台。我已经在网上搜索了几个小时,但似乎找不到实现这一目标的方法。UAC 似乎不适用于这种情况。但是我们在测试用例中需要它,因为这是用户将拥有的。

更新:您不能使用任务计划程序 API 注册将以最高权限运行的任务。仅当您在创建任务时具有管理员权限时才有可能,这在我的情况下没有用。所以我想我需要专门使用 schtasks.exe。

4

1 回答 1

2

它不起作用。我刚刚弄清楚了如何从命令行从 XML 定义文件创建任务。如果任务想要以管理员权限执行并将其注册为无有效管理员,则会失败。所以 schtasks 无法绕过 UAC 确认 - 只有任务计划程序 GUI 是。事实上,这个窗口的进程 mmc.exe 已经以管理员身份启动(没有 UAC 确认),因此很明显可以在那里创建这样的管理员任务。

我放弃绕过 UAC 确认。相反,我将在另一个本地管理员帐户下启动安装可执行文件,我知道密码(psexec可能)。它不会有测试用户的配置文件和环境,并且可能会做一些不同的细节,但毕竟这是一种应该工作的方式。

于 2013-06-27T12:29:38.740 回答