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