Вопрос или проблема
Существует ли способ отобразить владельца папок и файлов из командной строки в командной строке Windows 7?
Можно ли изменить владельца папки или файла на какого-либо “произвольного” пользователя, который не является вашим собственным именем пользователя?
У меня есть некоторые папки (и файлы), которые вероятно остались от приложения, которое я удалил. Если я пытаюсь просмотреть содержимое папок, мне сообщают, что у меня нет разрешения на это, даже если я действую как “Администратор”.
Я могу “взять на себя право владения” (предполагаю, что это будет успешно, но еще не пробовал) папками (файлами), но если мне нужно вернуть право собственности предыдущему владельцу, мне нужно знать имя пользователя оригинального владельца, и я должен иметь возможность “передать право собственности” этому пользователю.
Возможно ли сделать это из командной строки Windows (или, если нет, с помощью графического инструмента)?
Вы можете взять на себя право владения из командной строки с помощью команды takeown и через графический интерфейс Windows.
Вы можете просмотреть владельца файла/папки, используя DIR с параметром /q.
Вы можете просмотреть (и взять) право владения через графический интерфейс Windows, нажав правую кнопку мыши на объекте в проводнике Windows (файл или папка), выбрав Свойства, а затем перейдя на вкладку Безопасность. На вкладке Безопасность нажмите кнопку Дополнительно, а затем перейдите на вкладку Владелец в открывшемся диалоговом окне Расширенные параметры безопасности.
После того как вы взяли на себя право владения файлом/папкой, Windows не отслеживает предыдущего владельца, поэтому невозможно вернуть право собственности предыдущему владельцу. Кроме того, не существует концепции владения или разрешений на файлы, если вы работаете с типом файловой системы, который не поддерживает эти расширенные атрибуты, такие как FAT16, FAT32, exFAT и т.д.
Вы можете использовать wmic
, чтобы запросить информацию о владельце следующим образом:
wmic path Win32_LogicalFileSecuritySetting where Path="C:\\windows\\winsxs" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
Не используйте dir
, так как информация о владельце может быть обрезана, как в этом примере каталога.
Чтобы получить вывод в формате DOMAIN\USER
, вы можете использовать следующий пакетный скрипт:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
REM Экранируйте обратный слеш с помощью \\
SET ESCAPED=%~f1
SET ESCAPED=!ESCAPED:\=\\!
wmic path Win32_LogicalFileSecuritySetting where Path="!ESCAPED!" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID > "%temp%\wmi.tmp"
for /F "skip=2 delims=€" %%G in ('type %temp%\wmi.tmp') do (call :process_wmioutput "%%G")
goto :continue
:process_wmioutput
SET UNDELIMITED=%1
SET DELIMITED=!UNDELIMITED: =€!
FOR /F "delims=€ tokens=10,12" %%G in ("!DELIMITED!") DO (ECHO %%H\%%G)
exit /B
:continue
cacls
и icalcs
могут редактировать разрешения, а takeown
позволяет взять на себя право владения. Насколько мне известно, они существуют и в Windows 7. Обычно, после того как вы выполняете takeown
, вы следуете с cacls
или icalcs
, чтобы предоставить себе разрешения на объект.
Правка: Кредиты идут к codechurn за их описание использования takeown
.
SubInACL.exe
позволяет установить владельца. Синтаксис выглядит примерно так:
SubInACL /file filename /setowner=NewOwner
Если у вас его нет, вы можете скачать его с сайта Microsoft.
Конечно, вы должны иметь соответствующие права, чтобы сделать это.
Если вы просто используете DIR
в мире Microsoft, попробуйте опцию /Q
.
Например:
DIR *.xlsx /Q
Ответ или решение
Чтобы отобразить или изменить владельца файла или папки в Windows 7, можно воспользоваться как командной строкой, так и графическими инструментами. Ниже предоставлены шаги для выполнения этих действий:
Отображение владельца файла или папки
-
Использование командной строки: Вы можете использовать
wmic
, чтобы получить информацию о владельце:wmic path Win32_LogicalFileSecuritySetting where Path="C:\\путь\\к\\вашему\\файлу" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
Это вернёт информацию о владельце файла в формате SID, что может быть не очень удобно. Чтобы получить данные в виде
DOMAIN\USER
, вы можете использовать следующий скрипт:@ECHO OFF SETLOCAL EnableDelayedExpansion SET ESCAPED=%~f1 SET ESCAPED=!ESCAPED:\=\\! wmic path Win32_LogicalFileSecuritySetting where Path="!ESCAPED!" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID > "%temp%\wmi.tmp" for /F "skip=2 delims=€" %%G in ('type %temp%\wmi.tmp') do (call :process_wmioutput "%%G") goto :continue :process_wmioutput SET UNDELIMITED=%1 SET DELIMITED=!UNDELIMITED: =€! FOR /F "delims=€ tokens=10,12" %%G in ("!DELIMITED!") DO (ECHO %%H\%%G) exit /B :continue
-
Графический интерфейс: Вы можете щёлкнуть правой кнопкой мыши на файле или папке, выбрать Свойства, затем перейти на вкладку Безопасность. В ней нажмите на кнопку Дополнительно, и в открывшемся окне вы увидите информацию о владельце на вкладке Владелец.
Изменение владельца файла или папки
Хотя Windows 7 не сохраняет информацию о предыдущем владельце после того, как вы взяли на себяOwnership, вы можете изменить владельца на другого пользователя при соблюдении следующих шагов.
-
Использование командной строки:
- Сначала возьмите на себя владельца файла или папки, используя команду
takeown
:takeown /f "C:\\путь\\к\\вашему\\файлу" /a
- Затем используйте
SubInACL
, который можно скачать с сайта Microsoft, чтобы установить нового владельца:SubInACL /file "C:\\путь\\к\\вашему\\файлу" /setowner=имя_нового_владельца
- Сначала возьмите на себя владельца файла или папки, используя команду
-
Графический интерфейс:
- Правой кнопкой мыши щёлкните на файле или папке, выберите Свойства, затем вкладку Безопасность и нажмите Дополнительно.
- На вкладке Владелец вы сможете изменить владельца, выбрав нужного пользователя и подтвердив изменения.
Примечания
- Обратите внимание, что чтобы изменить владельца файла или папки, вы должны обладать соответствующими правами.
- Windows 7 не ведет учёт предыдущего владельца, поэтому, если вы измените владельца, возможность вернуть старый статус будет невозможной.
- Убедитесь, что файловая система, которую вы используете, поддерживает расширенные атрибуты безопасности (например, NTFS).
Следующие команды и операции должны помочь вам управлять владельцами и правами доступа к вашим файлам и папкам в Windows 7.