Завещание мистера Гейтса, или как запустить проводник с полными правами

Вадим Стеркин

Однажды посреди жаркого августовского дня я получил письмо от Холмса - он срочно просил меня приехать на Бейкер-стрит. Когда я вошел в кабинет, там уже сидела на краешке стула девушка, одетая скромно, но с большим вкусом.

"Знакомьтесь, это мисс Уинсли", - сказал Холмс, указав на нее рукой. "Она расскажет свою историю, которая должна вас заинтересовать", - слегка прищурившись, добавил он.

История мисс Уинсли

Девушка начала свой рассказ, собираясь с силами через каждые две-три фразы и не переставая нервно теребить в руках платочек. Отец ее умер, когда она была еще крохой, и мать вышла замуж повторно за некого мистера Гейтса. Тот был весьма богат, но особых щедрот падчерице не перепадало.

Запуск проводника с полными правами

Три года назад ее мать умерла, а недавно этот мир покинул и отчим. Почти все свое состояние он завещал фонду по борьбе с пиратскими сборками Windows. Девушке причиталась лишь малая толика, которой, впрочем, ей бы хватило на годы безбедного существования. Однако, то ли из вредности, то ли просто в шутку, мистер Гейтс включил в завещание особый пункт.

Чтобы получить свою долю наследства, мисс Уинсли должна была найти способ запустить проводник Windows 7 с правами администратора, не отключая контроль учетных записей и не завершая процесс explorer.exe. Причем на поиски решения ей отводилось ровно неделя.

За предыдущие шесть дней девушка сбилась с ног, пытаясь найти решение. Она обращалась к самым известным детективам, но все они говорили ей, что это невозможно.

Мисс Уинсли тяжело вздохнула и подняла на нас глаза, полные мольбы:
- Джентльмены, вы - моя последняя надежда! Если до вечера вы не подберете ключ к загадке, я обречена на нищенское существование.

Холмс задумчиво посмотрел на нее:
- Обычно, я избегаю дел, которые нужно решить к определенному сроку. Но поскольку все ваши карты уже биты, я возьмусь за это дело. Думаю, доктор Ватсон мне в этом поможет.

Когда девушка ушла, Холмс не спеша раскурил трубку и, наконец, обратился ко мне:
- Ватсон, вы сияете как бляха того усатого "бобби", что стоит сейчас на углу. Вам что, известно решение?

В тупике

Я всегда считал, что Холмс не слишком разбирается в современных технологиях - именно поэтому он меня и позвал! Компьютер он использовал разве что для чтения криминальной хроники, да скачивания нот для своих скрипичных упражнений.

Ни слова не говоря, я раскрыл ноутбук, который верой и правдой служил мне еще с иракской кампании. Запустив диспетчер задач с полными правами, я быстро завершил процесс explorer.exe, открыл Файл - Новая задача, ввел там explorer /separate и нажал Enter.

Запуск проводника с полными правами

Не скрывая торжества, я подвинул Холмсу ноутбук с открывшимся окном проводника.

- У explorer.exe есть недокументированный ключ /separate, запускающий проводник в отдельном процессе. Запуск такой команды с полными правами - это и есть ключ к разгадке, Холмс!
- Ватсон, во-первых, есть более гуманные способы завершения проводника…

Длинные пальцы Холмса быстро забегали по клавиатуре, открывая доселе неведомые мне возможности оболочки Windows. "А во-вторых…", - он щелкнул в адресной строке проводника, ввел cmd, нажал Enter и ткнул мундштуком трубки в заголовок окна командной строки. К моему стыду, там не было написано "Администратор".

Запуск проводника с полными правами

- Друг мой, надеюсь, вы понимаете, что окно проводника все-таки было открыто с обычными правами?
- Гм… погодите Холмс, но этот способ точно работал в Windows XP!

Я начал догадываться, почему за шесть дней никто не смог помочь мисс Уинсли. Вид у меня был, наверное, не слишком радостный.

О чем рассказал Process Explorer

Холмс с сожалением взглянул на меня через кольцо дыма:
- Windows XP… У вас есть 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\""

Запуск проводника с полными правами

- Мисс Уинсли, выбрав этот пункт и согласившись с запросом контроля учетных записей, вы откроете папку проводника с полными правами. Все программы, запущенные из этого окна проводника, тоже будут иметь права администратора. Перетаскивание файлов в программы с любыми правами также будет работать.

Впервые за время пребывания на Бейкер-стрит мисс Уинсли улыбнулась, и ее глаза засветились от счастья. Прижимая к груди нетбук, она осыпала меня словами благодарности, заставив даже покраснеть под ироничным взглядом Холмса.

Уже в дверях мисс Уинсли внезапно повернулась и спросила:
- Джентльмены, скажите, а это решение будет работать в Windows vNext? В завещании есть еще один пункт - я должна перейти на нее в день выхода RTM.

Я замер, но Холмс отреагировал моментально:
- Но ведь в завещании не сказано, что вы должны запускать проводник с полными правами в Windows vNext?

Девушка отрицательно покачала головой, подарила нам еще одну улыбку и скрылась за дверью.

А я не смог удержаться от вопроса:
- Откуда у вас такие глубокие познания в Windows, Холмс?
- Это элементарно, Ватсон! Я подписан на вестник "Think Outside the Box!", благодаря которому регулярно пополняю свой багаж знаний. Да и разобраться в Windows все-таки проще, чем научиться играть на скрипке!


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=35997