Облачное хранилище

Завещание мистера Гейтса

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

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

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

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

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

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

 

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

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

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

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

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

В тупике

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

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

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

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

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

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

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

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

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

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

Холмс с сожалением взглянул на меня через кольцо дыма:
— Windows XP… У вас есть Process Explorer? Хочу показать вам одну любопытную вещь.

Я, как и любой опытный врач, всегда таскаю в саквояже инструменты компании Sysinternals.

— Ватсон, когда вы запустили проводник в отдельном процессе, повышения прав не произошло, и у процесса остался средний уровень целостности. Но посмотрите внимательнее.

Запуск проводника с полными правами
Увеличить рисунок

— Process Explorer показывает, что отдельный процесс проводника запущен из-под процесса svchost.exe командой:

1
<span class="num0 user_selection_true">explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} –Embedding</span>

Холмс навел курсор на процесс svchost.exe, и я увидел, что это служба запуска процессов DCOM-сервера. Он подвинул мне ноутбук, откинулся на спинку кресла и загадочно улыбнулся. Было непонятно, знает ли он точное решение, но направление для поисков он мне показал.

Поиски в реестре

Я открыл редактор реестра и запустил поиск по идентификатору {75dff2b7-6936-4c06-a8bb-676a7b00b24b}, который используется в командной строке проводника. Он привел меня в один из подразделов HKEY_CLASSES_ROOTCLSID. Исходя из названия параметра по умолчанию, подраздел отвечал за запуск нескольких процессов проводника одновременно.

Запуск проводника с полными правами
Увеличить рисунок

В параметре AppID содержался другой идентификатор, очевидно, относящийся к приложению «Проводник». Дальнейший поиск по нему в реестре привел меня в раздел

1
<span class="num0 user_selection_true">HKEY_CLASSES_ROOTAppID{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2}</span>

Запуск проводника с полными правами
Увеличить рисунок

В параметре по умолчанию там было указано Elevated-Unelevated Explorer Factory, что явно намекало на связь с запуском проводника с полными и обычными правами.

— Холмс, параметр RunAs со значением Interactive User, очевидно, указывает на тип учетной записи для запуска процесса. Возможно, есть другие допустимые значения!

Я открыл браузер, намереваясь поискать в Интернете, но Холмс внезапно остановил меня:

— Минутку, Ватсон! Иногда полезно подумать самому, пока Гугл не отучил вас от этого достойного занятия. Вы слышали про оснастку «Службы компонентов»?

Секретные службы [компонентов]

Холмс нашел оснастку поиском в меню «Пуск» (впоследствии я узнал, что можно еще запустить исполняемый файл dcomcnfg.exe).

— Ее основным назначением является настройка объектов DCOM, и вот вам компонент Elevated-Unelevated Explorer Factory. Это не случайное совпадение!

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

Холмс открыл свойства компонента, и я увидел, что на вкладке «Удостоверение» предусмотрен выбор учетной записи для запуска процессов проводника.

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

«Параметр Текущий пользователь (Interactive User) соответствует значению параметра RunAs в реестре», — с авторитетным видом пояснил Холмс.

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

— Получается, нужно попробовать установить параметр «Запускающий пользователь». Однако почему все опции заблокированы, Холмс?
— Это же элементарно, Ватсон!

Смена типа учетной записи для запуска проводника

Холмс переключился в редактор реестра.

— Поскольку в оснастке невозможно изменить тип учетной записи, у вас нет прав на внесение изменений в раздел реестра. Это происходит в случае, если его владельцем является системная учетная записьTrustedInstaller.

Он ловко получил доступ к разделу реестра и перезапустил оснастку. Чудесным образом в свойствах компонента Elevated-Unelevated Explorer Factory появилась возможность изменить тип учетной записи!

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

Затем Холмс снова вернулся в раздел HKEY_CLASSES_ROOTAppID{CDCBCFCA-3CDC-436f-A4E2-0E02075250C2} и продемонстрировал мне, что параметр  RunAs исчез после изменения в оснастке.

Невозмутимо попыхивая трубкой, Холмс вернул исходные права и владельца раздела реестра на свои места, пояснив при этом:

— Как видите, изменение типа учетной записи для запуска проводника возможно двумя способами – в оснастке «Службы компонентов» и прямо в реестре. Впрочем, Ватсон, я не рекомендую вам удалять параметр реестра, т.к. достаточно переименовать его, например, в xRunAs.

Он подвинул мне ноутбук, давая понять, что проблема мисс Уинсли решена, и ехидно добавил:
— Кстати, Ватсон, теперь вовсе необязательно завершать все процессы проводника. Просто используйте ваш недокументированный ключ.

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

Я открыл командую строку с полными правами и выполнил explorer.exe /separate. Теперь запущенный процесс проводника (PID 5948) имел высокой уровень целостности.

Запуск проводника с полными правами
Увеличить рисунок

— Значит, «Текущий пользователь» (Interactive User) соответствует маркеру безопасности с обычными правами, который по умолчанию выдается даже администратору?
— Абсолютно верно, Ватсон! Вспомните историю про два билета на спектакль. Когда команда выполняется от имени администратора, «Запускающий пользователь» уже соответствует маркеру безопасности администратора. Поэтому теперь у проводника высокий уровень целостности, а его права полноценно повысились.

Я ввел в адресной строке проводника cmd, и командная строка открылась с полными правами (PID 2612).

— Можно вызывать мисс Уинсли?
— Конечно, Ватсон! И думаю, девушке будет приятно, если вы добавите ей в контекстное меню пункт для запуска проводника от имени администратора. Это послужит наглядным объяснением для распорядителей последней воли мистера Гейтса.

Пункт контекстного меню для запуска проводника с полными правами

Едва переступив порог, мисс Уинсли воскликнула:
— Джентльмены, неужели вы смогли найти решение всего за час?
— Позвольте ваш нетбук, леди. Доктор Ватсон покажет вам решение.

Мисс Уинсли достала из объемной сумочки серебристый VAIO и протянула мне. Уже через пару минут я создал в контекстном меню пункт для открытия папки от имени администратора.

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

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

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

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

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

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

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

Огромное спасибо Вадиму Стеркину