如何在Windows 7上显示/更改文件的所有者


14

有没有办法在Windoews 7命令提示符下从命令行显示文件夹和文件的所有者?

您可以将文件夹或文件的所有者更改为不是您自己的用户名的“任意”用户吗?

我有一些文件夹(和文件)可能是从已删除的应用程序中遗留下来的。如果我尝试查看文件夹的内容,即使没有以“管理员”身份运行,我仍被告知我无权这样做。

我可以“获取所有权”(我认为这会成功,但尚未尝试过)文件夹(文件),但是如果我需要将所有权恢复为先前的所有者,则需要知道原始用户名所有者,而我需要能够“授予所有权”该用户。

是否可以从Windows命令提示符(如果不是,则从GUI工具)执行此操作?


请参阅此处以了解仅使用cmd.exe的解决方案:使用wmic从命令行获取所有权信息
schletti2000 '16

Answers:


18

您可以通过takeown命令和Windows GUI 从命令行获取所有权。

您可以通过将DIR与/ q参数一起使用来查看文件/文件夹的所有者

通过右键单击Windows资源管理器中的对象(文件或文件夹),选择“ 属性”,然后导航到“ 安全性”选项卡,可以通过Windows GUI查看(并获取)所有权。在“ 安全性”选项卡上,单击“ 高级”按钮,然后在随后显示的“ 高级安全性设置”对话框中,导航到“ 所有者”选项卡。

一旦获得了文件/文件夹的所有权,Windows便不会跟踪先前的所有者,因此无法恢复到先前的所有者。另外,如果您使用的文件系统类型不支持这些扩展属性,例如FAT16,FAT32,exFAT等,则没有所有权或文件许可权的概念。


5

您可以使用以下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

SubInACL.exe允许您设置所有者。语法类似于:

SubInACL / file文件 / setowner = NewOwner

如果没有,可以从Microsoft下载

当然,您必须有权执行此操作。


2

caclsicalcs可以编辑权限并takeown允许拥有所有权。AFAIK它们也存在于Windows 7中。通常,一旦您执行takeown,便会对其进行跟进caclsicalcs授予自己对该对象的权限。

微软的安全模型不允许以所有的人,只能它。这样,管理员(或其他特权用户)无法直接获取她无法访问的文件的所有权,对其进行访问或修改,并将其交还给原始所有者,而无需通知原始所有者。

编辑:感谢Art来描述的使用takeown


1
cacls不允许更改或查看文件的所有者。您将使用takeown来做到这一点。通常,一旦进行了私有化,就可以使用calcs或icacls对其进行跟踪,以授予自己对该对象的权限。
艺术

谢谢,您完全正确。我猜这表明我离开微软世界太久了,以至于无法记住那些事情。我将相应地编辑答案。
David Foerster 2014年

2
我知道这是旧的,但我想我要补充一点,您可以使用icacls将所有者设置为其他人。icacls <路径> / SETOWNER <名称>起作用。当然,您必须是所有者或拥有适当的权限,然后才能这样做,以便您可以制定出拥有所有权并将其归还的方案,前提是您首先要拥有所有权。
2014年

上次我检查时,Windows禁止将所有权转移到另一个帐户(执行转移的帐户除外)。
David Foerster 2014年

@DavidFoerster-据此: 在Windows文件夹中,将“ TrustedInstaller”恢复为可执行文件的所有者,看来它将起作用。我还没有尝试过。
凯文·费根

-1

如果仅DIR在Microsoft世界中使用,请尝试该/Q选项。

例如:

DIR *.xlsx /Q

这是Art答案的重复。
fixer1234 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.