1734:数组边界无效

时间:2012-03-06 11:36:37

标签: windows batch-file

我有一个脚本,我需要以管理员身份运行一个命令。当我运行此命令时,脚本错误并出现1734错误。

我的脚本非常基本:

runas /user:Administrator "myexec.exe \"param with spaces\" otherparam -Djava.ext.dirs=%JAVA_EXT_DIRS%"

问题来自变量JAVA_EXT_DIRS,它有点巨大。

2 个答案:

答案 0 :(得分:2)

这是一个老问题,但是我现在在Windows 10上使用runas命令遇到了同样的问题。事实证明, program 参数的最大长度必须小于995个字符。

例如,此命令仍然有效:

runas /user:someuser /savecreds "cmd.exe 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"

此处的 program 参数具有994个字符,它应打开一个新的命令提示符。但是,如果您在该参数中再添加1,则执行将失败,并显示1734: The array bounds are invalid.错误。

如果将 program 参数进一步增加到1026个字符,则错误将更改为-2147024809: The parameter is incorrect.

命令行参数的常规限制似乎要大得多(我在SO上读到了约8191个字符),因此这似乎是runas.exe本身的问题。


修改:
当我尝试使用带有-Credential标志的PowerShell脚本时,甚至遇到了类似的问题:

$username       = "username" 
$password       = "password"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credentials    = New-Object System.Management.Automation.PSCredential $username, $securePassword
$argument       = $args[0]  

Start-Process -FilePath "C:\path\to\my.exe" -Credential $credentials -ArgumentList "-arg $argument"

因此,这可能是基础Windows机制的问题,而不是runas.exe本身。

答案 1 :(得分:0)

%JAVA_EXT_DIRS%的值也可能包含空格。你最好用双引号括起来:

runas /user:Administrator "myexec.exe \"param with spaces\" otherparam -Djava.ext.dirs=\"%JAVA_EXT_DIRS%\""