Как получить доступ к файлам, папкам, разделам реестра в Windows Vista и Windows 7

Источник: windxp
Павел Кравченко

Автор: Павел Кравченко

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

При отсутствии доступа к локальному объекту вы не можете управлять его разрешениями, отсутствие такой возможности может быть компенсировано сменой владельца объекта, после чего вы сможете управлять его разрешениями. Сделать это можно несколькими способами, рассмотрим их по порядку.

Способ 1. Использование графического интерфейса (GUI)

  1. Откройте проводник (редактор реестра) и перейдите к папке/файлу/разделу реестра, к которому необходимо получить доступ.
  2. Для файла или папки.
    1. Нажмите правую клавишу мыши и выберите в контекстном меню Свойства
    2. Перейдите на вкладку Безопасность
    3. Нажмите кнопку Дополнительно

    4. Перейдите на вкладку Владелец
    5. Нажмите кнопку Изменить

      *

    6. Установите курсор на группу Администраторы или на имя своей учетной записи и нажмитеОК. В случае с папкой также, вероятно, вам понадобится отметка параметра "Заменить владельца подконтейнеров и объектов".

      *

  3. Для раздела реестра.
    1. Нажмите правую клавишу мыши на подразделе реестра (в левой части редактора реестра) и выберите пункт Разрешения
    2. Нажмите кнопку Дополнительно
    3. Остальные шаги идентичны шагам 2.4-2.6
  4. Теперь, вы можете выставить разрешения своей учетной записи.
    1. На вкладке Безопасность нажмите кнопку Изменить под списком пользователей и групп

      *

    2. Нажмите кнопку Добавить

      *

    3. Введите имя своей учетной записи и нажмите ОК

      *

    4. Выставьте разрешения на объект добавленной учетной записи

Способ 2. Использование утилит командной строки takeown и icacls (применим только к файлам, папкам и дискам)

  1. Нажмите Пуск - в строке поиска введите cmd - на найденном файле нажмите правую клавишу мыши и выберите пункт Запуск от имени администратора

    *

    Примечание. Запуск от имени администратора в данном случае обязателен независимо от того, какими правами обладает учетная запись, в которой вы работаете в данный момент. Исключение может составлять только случай, когда вы работаете во встроенной учетной записи Администратор, которая по умолчанию отключена.
  2. В окне cmd введите следующую команду:
    takeown /f "C:\Program Files\ERUNT\ERUNT.EXE"
    Примечание. Здесь и далее полный путь и файл представлены в качестве примера и вместо "C:\Program Files\ERUNT\ERUNT.EXE" вы должны написать путь к файлу или папке, к которым необходимо получить доступ.
    Обратите внимание на то, что если в пути присутствуют пробелы (как в примере), то путь должен быть заключен в кавычки.
    В команде используется утилита takeown, которая позволяет восстанавливать доступ к объекту путем переназначения его владельца. Полный синтаксис утилиты вы можете получить по командеtakeown /?
  3. В командной строке введите следующую команду
    icacls "C:\Program Files\ERUNT\ERUNT.EXE" /grant Blast:F
    Примечание. В данной команде помимо пути к файлу необходимо указать и имя учетной записи, которой будут переданы разрешения на объект. Соответственно вы должны будете ввести свое имя пользователя.
    После применения этой команды вам будет показано сообщение об обработке файлов и папок. В случае, если таким образом не удастся получить полный доступ к объекту, проделайте процедуру повторно, загрузившись в безопасный режим.
    В этой команде используется утилита icacls, позволяющая управлять списками управления доступом (ACL), а значит и разрешениями для пользователей и процессов использовать  файлы и папки. Синтаксис утилиты вы сможете узнать по команде icacls /?

Способ 3. Пункт смены владельца объекта в контекстном меню проводника.

Для упрощения процедуры смены владельца вы можете добавить соответствующий пункт в контекстное меню проводника.
В предлагаемом варианте также используются утилиты командной строки takeown и icacls с определенными параметрами, а полученная команда установит владельцем объекта, на котором будет применяться пункт меню, группу Администраторы (или Administrators в английской версии ОС).

Для добавления пункта меню "Смена владельца" в русской версии Windows Vista примените этот твик реестра:
Примечание: подробнее о применении твиков реестра вы можете прочитать здесь: Применение твиков реестра

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="Смена владельца"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant администраторы:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant администраторы:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Смена владельца"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant администраторы:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant администраторы:F /t"

Для добавления пункта меню "Take Ownership" в английской версии Windows Vista примените этот твик реестра:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="Take Ownership"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Take Ownership"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

Для удаления этого пункта меню (независимо от языка системы) можете использовать следующий твик реестра:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\*\shell\runas]

[-HKEY_CLASSES_ROOT\Directory\shell\runas]

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