Ярлык администратора на пакетный файл с двойными заключенными в кавычки параметрами

Возьмите мучительно простой пакетный файл:

echo hi
pause

Сохраните это как test.bat. Теперь, сделайте ярлык на test.bat. Ярлык выполняет пакетный файл, который печатает "привет" и затем ожидает нажатия клавиши как ожидалось. Теперь, добавьте некоторый аргумент цели ярлыка. Теперь у Вас есть ярлык на:

%path%\test.bat some args

Ярлык выполняет пакетный файл как прежде.

Теперь, выполните ярлык как администратора. (Это находится в Windows 7 между прочим.) Можно использовать любой щелчок правой кнопкой-> Выполнение как Администратор, или переходить к свойствам ярлыка и устанавливать флажок в усовершенствованном разделе. Скажите контролю учётных записей, что это хорошо, и еще раз ярлык выполняет пакетный файл как ожидалось.

Теперь, измените аргументы в цели ярлыка для добавления двойных кавычек:

%path%\test.bat "some args"

Теперь попробуйте ярлык как администратора. Это не работает на этот раз! Командное окно открывается и и исчезает слишком быстро для наблюдения любой ошибки. Я пытался добавить> test.log 2> &1 к ярлыку, но никакой журнал не создается в этом случае.

Попытайтесь выполнить тот же ярлык (с двойными кавычками), но не как Администратор. Это выполняет прекрасный пакетный файл. Так, кажется, что поведение не из-за двойных заключенных в кавычки параметров, и это - не потому что это выполняется как Администратор. Это - некоторая странная комбинация двух.

Я также пытался выполнить ту же команду из командного окна администратора. Это выполнило пакетный файл как ожидалось без ошибки. Выполнение ярлыка от командного окна породило новое командное окно, которое высветилось и ушло. Таким образом, по-видимому, проблема вызывается комбинацией администратора, ярлыка и двойных кавычек.

Я полностью озадачен, у кого-либо есть какая-либо идея, что продолжается? Я также хотел бы обходное решение.

5
задан XXB 23 March 2010 в 16:41
поделиться

1 ответ

Я только что запустил Process Monitor на этом и вот что увидел:

Запуск от имени пользователя:

cmd /c ""C:\Users\Sunbelt\Desktop\test.bat" "some args""

Запуск от имени администратора:

"C:\Windows\System32\cmd.exe" /C "C:\Users\Sunbelt\Desktop\test.bat" "some args"

По какой-то причине случай «Запуск от имени администратора» не цитирует всю команду. Кажется, он пытается запустить команду:

C:\Users\Sunbelt\Desktop\test.bat" "some args

Я предполагаю, что, поскольку первый пробел процитирован, он на самом деле пытается запустить следующую команду:

"C:\Users\Sunbelt\Desktop\test.bat some" args

И в журналах Process Monitor есть запись файловой системы «NO SUCH» ФАЙЛ "для" C: ​​\ Users \ Sunbelt \ Desktop \ test.bat some ". Я не знаю, почему это отличается при запуске от имени администратора, но похоже, что это происходит.

5
ответ дан 14 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: