У меня есть файл .bat который я использую для запуска некоторых программ. Некоторые из них требуют повышенных привилегий (например, проверка dev -device-существующие на основе devcon ), а некоторые - нет. Итак, я запускаю .bat от имени администратора и использую команду runas для запуска остальных.
runas /trustlevel:0x20000 "C:\Folder\foo.exe"
runas /trustlevel:0x20000 "C:\Folder\bar.exe"
Это работает для некоторых программ. Однако для некоторых это сообщение об ошибке (перевод с финского самостоятельно, может немного отличаться на английском языке):
ERROR: Can not execute - bar.exe
740: The requested operation requires elevation.
Странная часть, если я создам этот .bat:
@echo off
start "" "bar.exe"
и запустить его с runas , это работает как шарм. Их сочетание
runas /trustlevel:0x20000 "start \"\" \"C:\Folder\bar.exe\""
не будет работать, потому что start не файл. Что вызвало бы это?
Обновление: я попробовал другую команду, и она работала.
runas /trustlevel:0x20000 "cmd /c start \"\" \"C:\Folder\bar.exe\""
Но я хочу знать не о том, как заставить это работать, а о том, почему это происходит.
Обновление 2: как предложено в комментариях and31415, это разница между foo.exe и bar.exe . Но должна быть разница между способами их запуска, поскольку их результаты различны; эта разница - то, что я ищу.
Обновление 3: я проверил манифесты программ с помощью редактора ресурсов, и вот они. Похоже, они имеют одинаковый уровень выполнения (как asInvoker , который является самым низким уровнем пользователя).

Верхний - это bar.exe а нижний - foo.exe . (Я знаю, наоборот:D)
Обновление 4: Подтверждено, что также происходит с psexec из командной строки с повышенными правами :
psexec -l -i bar.exe
получает ошибку,
psexec -l -i cmd /C start "" "bar.exe"
работает.
