Я пытаюсь запустить установку удаленно и не хочу отключать 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
Интересно, ошибка ли это, кажется, да.