Есть ли способ отобразить владельца папок и файлов из командной строки в Windows 7?
Можно ли изменить владельца папки или файла на «произвольного» пользователя, имя которого не является вашим собственным?
У меня есть несколько папок (и файлов), которыевероятноОсталось от приложения, которое я удалил. Если я пытаюсь просмотреть содержимое папок, мне говорят, что у меня нет на это разрешения, даже если я работаю как «Администратор».
Я могу «взять на себя право владения» (предполагаю, что это будет успешно, но пока не пробовал) папок (файлов), но если мне нужно вернуть право владения предыдущему владельцу, мне нужно знать имя пользователя первоначального владельца, и мне нужно иметь возможность «передать право владения» этому пользователю.
Можно ли это сделать из командной строки Windows (или, если нет, то из графического интерфейса)?
решение1
Вы можете стать владельцем из командной строки с помощьюзабратькоманды и через графический интерфейс Windows.
Вы можете просмотреть владельца файла/папки, используяДИРс параметром /q
Вы можете просмотреть (и стать) владельцем через графический интерфейс Windows, щелкнув правой кнопкой мыши объект в проводнике Windows (файл или папку) и выбравХарактеристикии затем перейти кБезопасностьвкладка. НаБезопасностьвкладку, нажмите кнопкуПередовойкнопку и на впоследствии отображаемомРасширенные настройки безопасностидиалог, перейдите кВладелецвкладка.
После того, как вы стали владельцем файла/папки, Windows не отслеживает предыдущего владельца, поэтому нет возможности вернуться к предыдущему владельцу. Кроме того, нет понятия владельца или разрешений файла, если вы работаете с типом файловой системы, который не поддерживает эти расширенные атрибуты, такие как FAT16, FAT32, exFAT и т. д.
решение2
Вы можете использовать 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 Escpe the backslash with \\
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
решение3
cacls
иicalcs
может редактировать разрешения иtakeown
позволяет взять на себя ответственность. Насколько мне известно, они существуют и в Windows 7. Обычно, как только вы делаетеtakeown
, вы следуете за нимcacls
илиicalcs
предоставить себе разрешения на доступ к объекту.
Модель безопасности Microsoft не позволяетдаватьсобственность кому-то, только кому-тобратьТаким образом, администратор (или иной привилегированный пользователь) не может стать владельцем файла, недоступного ему напрямую, получить к нему доступ или изменить его, а также вернуть его первоначальному владельцу без уведомления первоначального владельца.
Редактировать: заслуга принадлежитИскусстводля описания использованияtakeown
.
решение4
Если вы используете только DIR
продукты Microsoft, попробуйте этот /Q
вариант.
Например:
DIR *.xlsx /Q