Введение / Зачем это нужно
В Windows каждый файл и папка имеет владельца — учётную запись, которая может свободно изменять разрешения. При создании файлов другими пользователями, программами или системой (например, TrustedInstaller) вы можете получить ошибку «Доступ запрещён» даже будучи администратором.
Взятие владения (taking ownership) — это процесс смены владельца объекта на вашу учётную запись. После этого вы сможете:
- Изменять, переименовывать или удалять файл.
- Назначать права доступа другим пользователям.
- Редактировать системные конфигурации (например, hosts-файл).
В этом гайде мы разберём три рабочих способа: через графический интерфейс, PowerShell и командную строку.
Требования / Подготовка
- Учётная запись с правами администратора — без них смена владельца невозможна.
- Путь к файлу/папке — например,
C:\Windows\System32\drivers\etc\hosts. - Понимание рисков — не меняйте владельца критических системных файлов без необходимости. Перед действиями рекомендуется сделать резервную копию.
- Доступ к PowerShell или Command Prompt (CMD) с правами администратора — для консольных методов.
Шаг 1: Взятие владения через Проводник Windows
Этот способ подходит для разовых операций с конкретным файлом.
- Найдите нужный файл или папку в Проводнике.
- Щёлкните по нему правой кнопкой мыши → «Свойства».
- Перейдите на вкладку «Безопасность» → нажмите «Дополнительно».
- В разделе «Владелец» нажмите «Изменить».
- В появившемся окне введите ваше имя пользователя (например,
Администратор) или нажмите «Дополнительно» → «Найти сейчас», чтобы выбрать учётную запись. - Нажмите «ОК».
- Важно: В том же окне «Дополнительные параметры безопасности» поставьте галочку «Заменить владельца подконтейнеров и объектов», если нужно применить изменения ко всем вложенным файлам и папкам.
- Нажмите «ОК» → «ОК» → **«ОК»****, чтобы закрыть все окна.
Теперь вы — владелец. Но у вас может ещё не быть прав на изменение. Для этого в шаге 3 мы выдадим разрешения.
Шаг 2: Использование командной строки (CMD) или PowerShell
Консольные методы быстрее для массовых операций или системных файлов.
Способ A: Команда takeown
Utility takeown меняет владельца на текущего пользователя (или на указанную учётную запись).
Пример 1: Взять владение над файлом
takeown /F "C:\путь\к\файлу.txt"
Пример 2: Взять владение над папкой и всем её содержимым (рекурсивно)
takeown /F "C:\путь\к\папке" /R /D Y
/F— путь к файлу/папке./R— рекурсивно (для всех вложенных объектов)./D Y— автоматически подтверждать запросы на доступ (полезно при скриптах).
Пример 3: Указать конкретного пользователя (например, AdminUser)
takeown /F "C:\путь\к\файлу.txt" /U "AdminUser"
⚠️ Важно: Команда
takeownменяет только владельца, но не выдаёт права на изменение (Write). После её выполнения почти всегда нужен шаг 3 сicacls.
Способ B: Команда icacls
Утилита icacls позволяет гибко управлять разрешениями (ACL). После смены владельца через takeown выполните:
Выдать текущему пользователю полный доступ (Full Control)
icacls "C:\путь\к\файлу.txt" /grant "%USERNAME%":F
%USERNAME%— автоматическая подстановка вашего логина.:F— флаг полного контроля (Full Control).
Выдать права рекурсивно для папки
icacls "C:\путь\к\папке" /grant "%USERNAME%":F /T /C
/T— рекурсивно по всем подпапкам./C— продолжать при ошибках (пропускать недоступные файлы).
Сбросить все разрешения и установить новые (осторожно!)
icacls "C:\путь\к\файлу.txt" /reset
Эта команда удаляет все существующие ACL и заменяет их стандартными наследуемыми от родительской папки.
Шаг 3: Комбинированный скрипт для полного контроля
Для быстрого решения можно объединить takeown и icacls в один скрипт.
Создайте файл take_ownership.ps1 в PowerShell:
param(
[Parameter(Mandatory=$true)]
[string]$Path
)
# 1. Берём владение
takeown /F $Path /R /D Y | Out-Null
# 2. Выдаём полный доступ текущему пользователю
icacls $Path /grant "$env:USERNAME":F /T /C | Out-Null
Write-Host "Владение и права получены для: $Path" -ForegroundColor Green
Как использовать:
- Сохраните скрипт.
- Запустите PowerShell от имени администратора.
- Выполните:
.\take_ownership.ps1 -Path "C:\ваш\путь"
Шаг 4: Проверка результата
- Вернитесь в Свойства файла → Безопасность → Дополнительно.
- В поле «Владелец» должно отображаться ваше имя пользователя.
- На вкладке «Безопасность» в списке групп/пользователей найдите свою учётную запись и убедитесь, что для неё установлено разрешение «Полный доступ» (Full Control).
- Попробуйте изменить, переименовать или удалить файл — ошибки доступа быть не должно.
Возможные проблемы
Проблема: «Доступ запрещён» при выполнении команд
- Решение: Запустите PowerShell или CMD от имени администратора (щелкнуть правой кнопкой → «Запуск от имени администратора»).
Проблема: Файл заблокирован системой (например, C:\Windows\System32\...)
- Решение: Для системных файлов может потребоваться остановить соответствующий службу или загрузиться в Безопасном режиме. Используйте
takeownс ключом/A(взять владение для группы администраторов).
Проблема: После взятия владения файл снова становится недоступным
- Причина: На родительской папке установлены ограничения, которые переопределяют права.
- Решение: На папке выше по иерархии (родительской) снимите галочку «Заменять все записи разрешений...» в «Дополнительных параметрах безопасности» или используйте
icaclsс ключом/inheritance:rдля отключения наследования, а затем явно задайте права.
Проблема: icacls выводит ошибку «Нет доступа»
- Решение: Убедитесь, что вы действительно стали владельцем (шаг 1 или
takeown). Иногда требуется перезапустить проводник или компьютер для обновления токена доступа.
Проблема: Не могу взять владение над файлом в C:\Program Files
- Причина: Данная папка защищена Windows Resource Protection (WRP).
- Решение: Для изменений в
Program Filesиспользуйте развёртывание через установщик или временно отключите UAC (не рекомендуется). Вместо прямого редактирования файлов конфигурации используйте соответствующие API или реестр.