В сервере 2008 R2, если я запустил приложение в режиме администратора, будет ли дочерний процесс в том же режиме?
Я поднимаю этот вопрос, потому что подозреваю, что дочерний процесс приложения не работает в режиме администратора.
Да, дочерние процессы наследуют токен доступа родительского процесса (от Процесс и взаимодействие UAC в TechNet):
Каждое приложение, которому требуется маркер доступа администратора, должно запрашивать согласие администратора. Единственное исключение - отношения, существующие между родительским и дочерним процессами. Дочерние процессы наследуют маркер доступа пользователя от родительского процесса. Однако и родительский, и дочерний процессы должны иметь одинаковый уровень целостности.
Немного связанная информация о бонусе:
В runas
У утилиты есть два плохо документированных переключателя, которые называются /showtrustlevels
и /trustlevel
который, по-видимому, позволяет запускать (из процесса с повышенными правами) новый процесс с токеном стандартного пользователя, а не с токеном администратора, без снижения уровня целостности дочернего процесса:
runas /trustlevel:0x20000 cmd.exe
Вы обнаружите, что заголовок окна содержит (running as [username] with restricted privileges)
, и whoami отобразит список групп и привилегий с ограниченными правами по сравнению с запросом с повышенными правами:
Да, он будет выполняться с правами администратора.
Простой тест:
Вы можете проверить это, открыв приложение от имени администратора и запустив notepad.exe из приложения. Попробуйте сохранить пустой текстовый файл в папку C: \ Windows. Если это так не выдает ошибку разрешений, значит, вы знаете, что дочерний процесс (Блокнот) работает с повышенными привилегиями.
Да, ребенок будет в админке.
Вот почему запуск cmd.exe от имени администратора позволяет запускать другие программы в режиме администратора.