История мисс Уинсли
Девушка начала свой рассказ, собираясь с
силами через каждые две-три фразы и не переставая нервно теребить в
руках платочек. Отец ее умер, когда она была еще крохой, и мать вышла
замуж повторно за некого мистера Гейтса. Тот был весьма богат, но особых
щедрот падчерице не перепадало.
Три
года назад ее мать умерла, а недавно этот мир покинул и отчим. Почти
все свое состояние он завещал фонду по борьбе с пиратскими сборками
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 все-таки проще, чем научиться
играть на скрипке!