Издано: марта 6, 2009
Казалось бы, избитая тема, но не реже чем раз в неделю на форуме начинаются пространные объяснения о том, как же все-таки получить доступ к какому-либо объекту. Чаще всего - это, конечно, папки или файлы, иногда разделы реестра. Попробую собрать воедино способы получения доступа к локальным объектам.
При отсутствии доступа к локальному объекту вы не можете управлять его разрешениями, отсутствие такой возможности может быть компенсировано сменой владельца объекта, после чего вы сможете управлять его разрешениями. Сделать это можно несколькими способами, рассмотрим их по порядку.
Способ 1. Использование графического интерфейса (GUI)


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

Примечание. Запуск от имени администратора в данном случае обязателен независимо от того, какими правами обладает учетная запись, в которой вы работаете в данный момент. Исключение может составлять только случай, когда вы работаете во встроенной учетной записи Администратор, которая по умолчанию отключена.
takeown /f “C:\Program Files\ERUNT\ERUNT.EXE”
Примечание. Здесь и далее полный путь и файл представлены в качестве примера и вместо “C:\Program Files\ERUNT\ERUNT.EXE” вы должны написать путь к файлу или папке, к которым необходимо получить доступ.
Обратите внимание на то, что если в пути присутствуют пробелы (как в примере), то путь должен быть заключен в кавычки.
В команде используется утилита takeown, которая позволяет восстанавливать доступ к объекту путем переназначения его владельца. Полный синтаксис утилиты вы можете получить по команде takeown /?
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]
Готовые файлы реестра для добавления и удаления этого пункта меню: TakeOwnership.zip
Популярность: 8% [!]
Tagged with: quote, Windows Vista