В чем разница между runas.exe и "запуск от имени другого пользователя"?

Я работаю с бизнес-приложением, которое должно запускаться как пользователь домена. У меня есть пользователь, который хочет продолжать использовать локальную учетную запись (поскольку не все можно перенести в профиль пользователя домена), хотя компьютер присоединен к домену, поэтому я создал ярлык, который запускает пакетный файл, который использует runas.exe, который запрашивает у пользователя пароль домена. Полный пакетный файл выглядит следующим образом:

cd pathtoapp
whoami | findstr /i "domain"
if errorlevel 1 (
 runas /user:domaindomuser pathtoappapp.exe
) else (
 app.exe
)

(по существу, это только runas если пользователь не в настоящее время выполнен вход в качестве пользователя домена.) Я не использую другие переключатели на runas, но когда я пытаюсь их, /noprofile и /env кажется, ничего не делают.

это приложение запускается и отображает свой начальный экран после ввода пароля в runas. (Если он запускается от имени локального пользователя, он выдает диалоговое окно сбоя, а здесь этого не происходит.) Однако затем приложение переходит к неправильному поведению. Странная часть заключается в том, что он отлично работает, если я Shift + щелкните правой кнопкой мыши (либо этот ярлык, либо сам EXE) и выполните "Запуск от имени другого пользователя".

у меня нет доступа к источнику этой программы, и я не имею права обсуждать его специфику. Это не относится к делу, хотя -чем отличается запуск с runas и "запуск от имени другого пользователя"?

это 64-разрядная версия Windows 10 Pro, хотя я также вижу эту проблему в Windows 8.1 Pro.

17
задан Ben N
22.12.2022 14:39 Количество просмотров материала 2819
Распечатать страницу

1 ответ

после некоторых экспериментов, я заметил, что runas.exe всегда устанавливает каталог запуска программы в System32, а Запуск от имени другого пользователя задает начальное направление к папке, содержащей EXE-файл.

доказательство

это можно продемонстрировать, создав пакетный файл, содержащий что-то вроде:

echo %cd%
pause

поместите его в папку, доступную для всех пользователей. Если вы запустите его, просто дважды щелкнув его в Проводнике, он покажет каталог, содержащий его. Он будет делать то же самое, если вы используете Запуск от имени другого пользователя. Если вы открываете окно командной строки там и сделать runas /user:otheruser test.bat, он потерпит неудачу ("нет такого файла"), если test.bat не бывает на другого пользователя или системы PATH. Это потому что runas начинается в System32. Если вы делаете runas /user:otheruser \full\path\to\test.bat, он начнет, и отобразит путь к System32, потому что это его начальный каталог.

устранение проблемы

программы в вопрос делает странные вещи (но не катастрофа), если он не видит некоторые файлы в текущий каталог/. Обновите пакетный файл для использования runas в пакетном файле, который первым cds в нужный каталог, затем запускает программу.

2
отвечен Ben N 2022-12-23 22:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх