我正在尝试安排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
此外,当使用管理员帐户时,任务将正确运行为“运行是否登录用户”,但我无法使用管理员帐户作为解决方案。
答案 0 :(得分:1)
您需要授予用户“以批处理作业登录”权限。这可以通过GUI:
完成gpedit.msc
gpedit.msc
或在命令行上:
ntrights +r SeBatchLogonRight -u domain\username
ntrights.exe
是Windows 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对象实现什么?使用XMLHttpRequest
可能是更好的后台任务方法。