0

我正在尝试安排一个 vbs 脚本以常规用户权限运行。该脚本在以用户身份登录时运行良好,但是当我尝试从任务计划程序运行脚本作为“运行用户是否登录”时,它卡在以下行:

设置 IE = CreateObject("InternetExplorer.Application")

我尝试在选中和未选中“以最高权限运行”的情况下运行它。我从任务调度程序运行程序:

program/script: "c:\windows\system32\cscript.exe"
arguments: "test.vbs"
start in: c:\

这是完整的代码:

Set fso = WScript.CreateObject("Scripting.Filesystemobject")
set tfo = fso.createTextFile("c:\123.txt")
tfo.writeline("1")
Set IE = CreateObject("InternetExplorer.Application")
tfo.writeline("2")
tfo.close

运行时输出为“仅在用户登录时运行”:

1
2

运行时输出“无论用户是否登录都运行”:

1

此外,当使用管理员帐户时,该任务将作为“无论用户是否登录都运行”正确运行,但我不能使用管理员帐户作为解决方案。

4

1 回答 1

1

您需要授予用户“作为批处理作业登录”权限。这可以通过 GUI 完成:

  • 开始gpedit.msc
  • 导航到计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权限分配
  • 双击“作为批处理作业登录”权限
  • 添加用户帐户
  • 单击“确定”并关闭gpedit.msc

或在命令行上:

ntrights +r SeBatchLogonRight -u domain\username

ntrights.exeWindows Server 2003 Resource Kit Tools的一部分,但也适用于 Windows 7。您不必安装整个软件包。相反,您可以使用例如7-zip打开/解rktools.msi压缩rktools.exe.

编辑:既然您已经这样做了,问题可能是脚本无法生成 GUI 应用程序,因为当用户未登录时您没有交互式桌面。尝试在脚本中添加一些调试代码:

...
On Error Resume Next
Set IE = CreateObject("InternetExplorer.Application")
If Err Then tfo.writeline Err.Number & vbTab & Err.Description
On Error Goto 0
...

此代码片段的测试运行给了我“权限被拒绝”错误。显然受限用户无法在计划任务中创建 IE 实例。

也就是说,你想用 Internet Explorer 对象实现什么?对于后台任务,使用 anXMLHttpRequest可能是更好的方法。

于 2013-04-06T12:16:14.307 回答