Как использовать psexec для запуска установки или другую задачу, требующую взаимодействия с UAC?
Я пытаюсь удаленно запустить установку и не хочу отключать UAC. Если я запускаю процессы удаленно с помощью psexec, установщик просто останавливается в ожидании приглашения UAC. Другие задачи, такие как очистка временных файлов, перезапуск служб и т. Д., Приведут к ошибкам Access Denied. Есть ли в любом случае psexec может обойти UAC, например, войти в систему с правами администратора, но с привилегиями TrustedInstaller или что-то в этом роде?
Кстати, я ориентируюсь на Windows 2008 R2, но думаю, что этот вопрос относится и к Vista, 2008 и Windows 7.
7 ответов
Вам нужно использовать опцию -u и указать учетную запись, которая имеет локальный доступ администратора к этому компьютеру (локальная учетная запись, учетная запись администратора домена и т. Д.)
-u Specifies optional user name for login to remote computer.
Например
psexec \\pc999.myDomain.loc -u pc999\Administrator <your exe
>
Параметр -h здесь является ключевым: без него psexec не выполнит команду с повышенными привилегиями UAC в Windows Vista и выше:
C:\Users\merickson>psexec /? PsExec v1.97 - Execute processes remotely Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com PsExec executes a program on a remote system, where remotely executed console applications execute interactively. Usage: psexec [\\computer[,computer2[,...] | @file]][-u user [-p psswd] [-n s][-l][-s|-e][x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>] [-a n,n,...] cmd [arguments] ... -h If the target system is Vista or higher, has the process run with the account's elevated token, if available. ...
(редактировать: добавлено подтверждение существования ключа -h согласно комментарию ниже)
psexec \<remote IP> -u user -p password -h netsh advfi
rewall firewall add rule name="AllowRDP " dir=in action=allow protocol=TCP local
port=3389
Очевидно, мой процесс был заблокирован не потому, что psexec игнорировал предоставленный логин.
Не знаю почему, но при использовании Vista в качестве клиентского компьютера учетные данные, передаваемые с параметрами -u и -p, фактически не использовались для входа на сервер (выяснилось с помощью средства просмотра событий на сервере). Вместо этого всегда использовался зарегистрированный пользователь. Очевидно, это то, что происходит, когда обе машины находятся в одном домене.
Пришлось открыть диспетчер учетных данных (Панель управления> Учетные записи пользователей> Управление сетевыми паролями) и создать новый набор для целевой машины с пользователем, которого я хотел использовать для psexec.
У меня та же проблема. Я запускаю команду: psexec.exe -accepteula -n 120 \MyServer -u Пользователь -p Пароль cmd "/C dir
Я запускаю его с win2008 r2, и цель (MyServer) - также win2008 r2.
Предложение Мигеля сработало для меня, после того, как я добавил учетные данные, оно работало нормально.
У меня также была эта проблема, но решение Miguel по добавлению учетных данных в диспетчер учетных данных решило проблему для меня
Запуск Windows 7 32-bit на клиенте и сервере в домене с использованием psexec 1.98
Интересно, если это ошибка, кажется, так.
Вы можете использовать флаг -s для запуска команды в контексте SYSTEM. Это предполагает, что вы еще не запускаете команду с другими учетными данными, которым нужен доступ в другом месте сети.