Назад | Перейти на главную страницу

Как использовать psexec для запуска установки или другой задачи, требующей взаимодействия с UAC?

Я пытаюсь запустить установку удаленно и не хочу отключать UAC. Если я запущу процессы удаленно с помощью psexec, установщик просто остановится в ожидании приглашения UAC. Другие задачи, такие как очистка временных файлов, перезапуск служб и т. Д., Вызывают ошибки «Доступ запрещен». Может ли psexec каким-либо образом обойти UAC, например, войти в систему с правами администратора, но с привилегиями TrustedInstaller или что-то в этом роде?

Кстати, я нацелен на Windows 2008 R2, но думаю, что этот вопрос относится и к Vista, 2008 и Windows 7.

Параметр -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 игнорировал предоставленный логин.

Не уверен, почему, но при использовании Vista в качестве клиентской машины учетные данные, переданные с параметрами -u и -p, фактически не использовались для входа на сервер (выяснилось с помощью средства просмотра событий на сервере). Вместо этого всегда использовался вошедший в систему пользователь. По-видимому, именно это происходит, когда обе машины находятся в одном домене.

Пришлось открыть диспетчер учетных данных (Панель управления> Учетные записи пользователей> Управление паролями сети) и создать новый набор для целевой машины с пользователем, которого я хотел использовать для psexec.

Вам необходимо использовать параметр -u и указать учетную запись, у которой есть доступ локального администратора к этому компьютеру (локальная учетная запись, учетная запись администратора домена и т. Д.)

 -u         Specifies optional user name for login to remote
            computer.

Например

psexec \\pc999.myDomain.loc -u pc999\Administrator <your exe>

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

Вы можете использовать -s флаг для запуска команды в контексте СИСТЕМЫ. Предполагается, что вы еще не выполняете команду с другими учетными данными, которым нужен доступ в другом месте сети.

У меня та же проблема. Я запускаю команду psexec.exe -accepteula -n 120 \ MyServer -u User -p Password cmd "/ C dir

Я запускаю его из win2008 r2, а целью (MyServer) также является win2008 r2.

Предложение Мигеля сработало для меня, после того как я добавил учетные данные, он работал нормально.

У меня тоже была эта проблема, но решение miguel по добавлению учетных данных в диспетчер учетных данных решило проблему для меня.

Запуск 32-разрядной версии Windows 7 как на клиенте, так и на сервере в домене с использованием psexec 1.98

Интересно, ошибка ли это, кажется, да.