Как использовать 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. Это предполагает, что вы еще не запускаете команду с другими учетными данными, которым нужен доступ в другом месте сети.

Другие вопросы по тегам