1734: недопустимы границы массива - PullRequest
2 голосов
/ 06 марта 2012

У меня есть скрипт, в котором мне нужно запустить одну команду от имени администратора. Когда я запустил эту команду, ошибки скрипта с ошибкой 1734.

Мой сценарий очень прост:

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

Проблема возникает из-за огромной переменной JAVA_EXT_DIRS.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Это старый вопрос, но я столкнулся с той же проблемой в 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..

Обычный лимит для параметров командной строки, кажется, намного больше (я читал кое-что о 8191 символе здесь на SO), так что это, похоже, проблема с runas.exeсам по себе.


Редактировать:
Я даже столкнулся с подобной проблемой, когда пытался использовать скрипт PowerShell с флагом -Credential, подобным этому:

$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.

0 голосов
/ 06 марта 2012

Значение %JAVA_EXT_DIRS% также может содержать пробелы. Лучше в двойных кавычках:

runas /user:Administrator "myexec.exe \"param with spaces\" otherparam -Djava.ext.dirs=\"%JAVA_EXT_DIRS%\""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...