Да, он выполняется с повышенными привилегиями.
Простой тест:
Вы можете легко проверить это, открыв одну командную строку с повышенными правами и одну без повышенных прав. Запустите команду notepad.exe
в обоих файлах и попробуйте сохранить пустой текстовый файл в C:\Windows
. Один сохранит, другой выдаст ошибку прав доступа.
Тщательный тест:
Если этого недостаточно, чтобы подтвердить это для вас (это меня не очень устраивало), вы можете использовать AccessChk из SysInternals. Вам нужно будет запустить это из командной строки с повышенными правами.
Давайте начнем с проверки двух запущенных процессов Блокнота:
Блокнот: (accesschk.exe -v -p notepad
)
[11140] notepad.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW DOMAIN\Tannerf
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[11004] notepad.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
Один работает под моим именем пользователя домена, другой работает под встроенной группой администраторов. Он также имеет высокий обязательный уровень. Вы также можете запустить с флагом -f
для разбивки привилегий и токенов.
MSIExec и MSI файлы
Я думал, что все может стать немного сложнее при запуске msiexec
. У меня есть автономный установщик Google Chrome, который был удобен для тестирования.
msiexec.exe запускает установщик Chrome из командной строки с повышенными правами:
D:\Users\tannerf>accesschk.exe -p msiexec.exe
[10540] msiexec.exe
RW BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
chrome_installer.exe, созданный MSI:
D:\Users\tannerf>accesschk.exe -p chrome_installer.exe
[5552] chrome_installer.exe
NT AUTHORITY\SYSTEM
OWNER RIGHTS
RW NT SERVICE\msiserver
Уже не так стричь и сушить! Похоже, процессы chrome_installer.exe
выполнялись через службу MSIServer.
Это заставляет меня задуматься о поведении других инсталляторов, поэтому я запустил Evernote.msi, который мне пригодился:
Повышенный msiexec.exe запускает установщик Evernote:
[6916] msiexec.exe
High Mandatory Level [No-Write-Up, No-Read-Up]
RW BUILTIN\Administrators
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[4652] msiexec.exe
System Mandatory Level [No-Write-Up, No-Read-Up]
R BUILTIN\Administrators
PROCESS_QUERY_INFORMATION
PROCESS_QUERY_LIMITED_INFORMATION
Интересно; на этот раз есть msiexec.exe, который запускается на системном уровне. Я использовал Process Monitor, чтобы обнаружить, что всплывающее окно фактической установки происходит из процесса msiexec системного уровня. Убийство высокого обязательного уровня также убило процесс системного уровня.
Msiexec.exe без повышенных прав, запускающий установщик Evernote:
[7472] msiexec.exe
Medium Mandatory Level [No-Write-Up, No-Read-Up]
RW DOMAIN\Tannerf
PROCESS_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
PROCESS_ALL_ACCESS
[4404] msiexec.exe
System Mandatory Level [No-Write-Up, No-Read-Up]
R BUILTIN\Administrators
PROCESS_QUERY_INFORMATION
PROCESS_QUERY_LIMITED_INFORMATION
Похоже, Evernote получит доступ на системном уровне в любом случае. Двойной щелчок установщика приводит к тому же результату.
Заключение:
Я думаю, что это довольно хорошо продемонстрировано, что процессы будут наследовать разрешения, если не указано иное. Это не гарантирует, что msiexec SomeProgram.msi
будет работать с высоким обязательным уровнем для всех процессов процессов; он может работать на системном уровне или под MSIServer. Ваш пробег может варьироваться, и я не удивлюсь, увидев много случаев, когда эти правила кажутся "нарушенными".