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

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

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

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

我有一些文件夹(和文件)大概我删除的应用程序留下的。如果我尝试查看文件夹的内容,系统会提示我没有权限,即使我以“管理员”身份运行。

我可以“取得文件夹(文件)的所有权”(我认为这会成功但还没有尝试过),但如果我需要将所有权恢复给前一个所有者,我需要知道原始所有者的用户名,并且我需要能够“授予所有权”给该用户。

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

答案1

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

您可以使用以下方式查看文件/文件夹的所有者目录使用 /q 参数

您可以通过 Windows GUI 查看(并获取)所有权,方法是右键单击 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

caclsicalcs可以编辑权限和takeown允许取得所有权。据我所知,Windows 7 中也存在。通常,一旦你做了takeown,然后cacls或者icalcs授予自己对该对象的权限。

微软的安全模型不允许所有权归某人,仅这样,管理员(或其他特权用户)就无法直接取得其无法访问的文件的所有权,无法访问或修改该文件,也无法在未通知原所有者的情况下将其归还给原所有者。

编辑:归功于艺术用于描述使用takeown

答案4

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

例如:

DIR *.xlsx /Q

相关内容