Завещание мистера Гейтса, или как запустить проводник с полными правамиИсточник: outsidetheboxms Вадим Стеркин
Однажды посреди жаркого августовского дня я получил письмо от Холмса - он срочно просил меня приехать на Бейкер-стрит. Когда я вошел в кабинет, там уже сидела на краешке стула девушка, одетая скромно, но с большим вкусом. "Знакомьтесь, это мисс Уинсли", - сказал Холмс, указав на нее рукой. "Она расскажет свою историю, которая должна вас заинтересовать", - слегка прищурившись, добавил он. История мисс УинслиДевушка начала свой рассказ, собираясь с силами через каждые две-три фразы и не переставая нервно теребить в руках платочек. Отец ее умер, когда она была еще крохой, и мать вышла замуж повторно за некого мистера Гейтса. Тот был весьма богат, но особых щедрот падчерице не перепадало. Три года назад ее мать умерла, а недавно этот мир покинул и отчим. Почти все свое состояние он завещал фонду по борьбе с пиратскими сборками Windows. Девушке причиталась лишь малая толика, которой, впрочем, ей бы хватило на годы безбедного существования. Однако, то ли из вредности, то ли просто в шутку, мистер Гейтс включил в завещание особый пункт. Чтобы получить свою долю наследства, мисс Уинсли должна была найти способ запустить проводник Windows 7 с правами администратора, не отключая контроль учетных записей и не завершая процесс explorer.exe. Причем на поиски решения ей отводилось ровно неделя. За предыдущие шесть дней девушка сбилась с ног, пытаясь найти решение. Она обращалась к самым известным детективам, но все они говорили ей, что это невозможно. Мисс Уинсли тяжело вздохнула и подняла на нас глаза, полные мольбы: Холмс задумчиво посмотрел на нее: Когда девушка ушла, Холмс не спеша раскурил трубку и, наконец, обратился ко мне: В тупикеЯ всегда считал, что Холмс не слишком разбирается в современных технологиях - именно поэтому он меня и позвал! Компьютер он использовал разве что для чтения криминальной хроники, да скачивания нот для своих скрипичных упражнений. Ни слова не говоря, я раскрыл ноутбук, который верой и правдой служил мне еще с иракской кампании. Запустив диспетчер задач с полными правами, я быстро завершил процесс explorer.exe, открыл Файл - Новая задача, ввел там explorer /separate и нажал Enter. Не скрывая торжества, я подвинул Холмсу ноутбук с открывшимся окном проводника. - У explorer.exe есть недокументированный ключ /separate, запускающий проводник в отдельном процессе. Запуск такой команды с полными правами - это и есть ключ к разгадке, Холмс! Длинные пальцы Холмса быстро забегали по клавиатуре, открывая доселе неведомые мне возможности оболочки Windows. "А во-вторых…", - он щелкнул в адресной строке проводника, ввел cmd, нажал Enter и ткнул мундштуком трубки в заголовок окна командной строки. К моему стыду, там не было написано "Администратор". - Друг мой, надеюсь, вы понимаете, что окно проводника все-таки было открыто с обычными правами? Я начал догадываться, почему за шесть дней никто не смог помочь мисс Уинсли. Вид у меня был, наверное, не слишком радостный. О чем рассказал Process ExplorerХолмс с сожалением взглянул на меня через кольцо дыма: Я, как и любой опытный врач, всегда таскаю в саквояже инструменты компании Sysinternals. - Ватсон, когда вы запустили проводник в отдельном процессе, повышения прав не произошло, и у процесса остался средний уровень целостности. Но посмотрите внимательнее. - Process Explorer показывает, что отдельный процесс проводника запущен из-под процесса svchost.exe командой: explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} -Embedding Холмс навел курсор на процесс svchost.exe, и я увидел, что это служба запуска процессов DCOM-сервера. Он подвинул мне ноутбук, откинулся на спинку кресла и загадочно улыбнулся. Было непонятно, знает ли он точное решение, но направление для поисков он мне показал. Поиски в реестреЯ открыл редактор реестра и запустил поиск по идентификатору {75dff2b7-6936-4c06-a8bb-676a7b00b24b}, который используется в командной строке проводника. Он привел меня в один из подразделов HKEY_CLASSES_ROOT\CLSID. Исходя из названия параметра по умолчанию, подраздел отвечал за запуск нескольких процессов проводника одновременно. В параметре AppID содержался другой идентификатор, очевидно, относящийся к приложению "Проводник". Дальнейший поиск по нему в реестре привел меня в раздел HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2} В параметре по умолчанию там было указано Elevated-Unelevated Explorer Factory, что явно намекало на связь с запуском проводника с полными и обычными правами. - Холмс, параметр RunAs со значением Interactive User, очевидно, указывает на тип учетной записи для запуска процесса. Возможно, есть другие допустимые значения! Я открыл браузер, намереваясь поискать в Интернете, но Холмс внезапно остановил меня: - Минутку, Ватсон! Иногда полезно подумать самому, пока Гугл не отучил вас от этого достойного занятия. Вы слышали про оснастку "Службы компонентов"? Секретные службы [компонентов]Холмс нашел оснастку поиском в меню "Пуск" (впоследствии я узнал, что можно еще запустить исполняемый файл dcomcnfg.exe). - Ее основным назначением является настройка объектов DCOM, и вот вам компонент Elevated-Unelevated Explorer Factory. Это не случайное совпадение! Холмс открыл свойства компонента, и я увидел, что на вкладке "Удостоверение" предусмотрен выбор учетной записи для запуска процессов проводника. "Параметр Текущий пользователь (Interactive User) соответствует значению параметра RunAs в реестре", - с авторитетным видом пояснил Холмс. Увидев и другие варианты, я предположил, что этот параметр ограничивает запуск проводника текущими правами учетной записи, которые даже у администратора являются обычными. - Получается, нужно попробовать установить параметр "Запускающий пользователь". Однако почему все опции заблокированы, Холмс? Смена типа учетной записи для запуска проводникаХолмс переключился в редактор реестра. - Поскольку в оснастке невозможно изменить тип учетной записи, у вас нет прав на внесение изменений в раздел реестра. Это происходит в случае, если его владельцем является системная учетная запись TrustedInstaller. Он ловко получил доступ к разделу реестра и перезапустил оснастку. Чудесным образом в свойствах компонента Elevated-Unelevated Explorer Factory появилась возможность изменить тип учетной записи! Затем Холмс снова вернулся в раздел HKEY_CLASSES_ROOT\AppID\{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2} и продемонстрировал мне, что параметр RunAs исчез после изменения в оснастке. Невозмутимо попыхивая трубкой, Холмс вернул исходные права и владельца раздела реестра на свои места, пояснив при этом: - Как видите, изменение типа учетной записи для запуска проводника возможно двумя способами - в оснастке "Службы компонентов" и прямо в реестре. Впрочем, Ватсон, я не рекомендую вам удалять параметр реестра, т.к. достаточно переименовать его, например, в xRunAs. Он подвинул мне ноутбук, давая понять, что проблема мисс Уинсли решена, и ехидно добавил: Запуск проводника с полными правамиЯ открыл командую строку с полными правами и выполнил explorer.exe /separate. Теперь запущенный процесс проводника (PID 5948) имел высокой уровень целостности. - Значит, "Текущий пользователь" (Interactive User) соответствует маркеру безопасности с обычными правами, который по умолчанию выдается даже администратору? Я ввел в адресной строке проводника cmd, и командная строка открылась с полными правами (PID 2612). - Можно вызывать мисс Уинсли? Пункт контекстного меню для запуска проводника с полными правамиЕдва переступив порог, мисс Уинсли воскликнула: Мисс Уинсли достала из объемной сумочки серебристый VAIO и протянула мне. Уже через пару минут я создал в контекстном меню пункт для открытия папки от имени администратора. Windows Registry Editor Version 5.00 ;Контекстное меню папки [HKEY_CLASSES_ROOT\Directory\shell\ExplorerElevated] @="Открыть папку от имени администратора" ;Отображение пункта только при нажатой клавише SHIFT "Extended"="" "Icon"="imageres.dll,73" [HKEY_CLASSES_ROOT\Directory\shell\ExplorerElevated\command] @="nircmd.exe elevate explorer.exe /separate \"%1\"" ;Контекстное меню фона папки и рабочего стола [HKEY_CLASSES_ROOT\Directory\Background\shell\ExplorerElevated] @="Открыть папку от имени администратора" ;Отображение пункта только при нажатой клавише SHIFT "Extended"="" "Icon"="imageres.dll,73" [HKEY_CLASSES_ROOT\Directory\Background\shell\ExplorerElevated\command] @="nircmd.exe elevate explorer.exe /separate \"%V\"" - Мисс Уинсли, выбрав этот пункт и согласившись с запросом контроля учетных записей, вы откроете папку проводника с полными правами. Все программы, запущенные из этого окна проводника, тоже будут иметь права администратора. Перетаскивание файлов в программы с любыми правами также будет работать. Впервые за время пребывания на Бейкер-стрит мисс Уинсли улыбнулась, и ее глаза засветились от счастья. Прижимая к груди нетбук, она осыпала меня словами благодарности, заставив даже покраснеть под ироничным взглядом Холмса. Уже в дверях мисс Уинсли внезапно повернулась и спросила: Я замер, но Холмс отреагировал моментально: Девушка отрицательно покачала головой, подарила нам еще одну улыбку и скрылась за дверью. А я не смог удержаться от вопроса: |