Kev*_*gan 19 windows-7 command-line permissions
有没有办法在 Windows 7 命令提示符下从命令行显示文件夹和文件的所有者?
您可以将文件夹或文件的所有者更改为某个不是您自己用户名的“任意”用户吗?
我有一些文件夹(和文件)可能是我删除的应用程序遗留下来的。如果我尝试查看文件夹的内容,我会被告知我无权这样做,即使我以“管理员”身份运行。
我可以“取得所有权”(我认为这会成功,但还没有尝试过)文件夹(文件),但是如果我需要将所有权恢复给以前的所有者,我需要知道原始所有者的用户名所有者,我需要能够“授予所有权”给该用户。
是否可以从 Windows 命令提示符(或者如果不能,从 GUI 工具)执行此操作?
Art*_*Art 21
您可以通过takeown命令和 Windows GUI从命令行获取所有权。
您可以使用带有 /q 参数的DIR查看文件/文件夹的所有者
通过右键单击 Windows 资源管理器(文件或文件夹)中的对象,选择“属性”,然后导航到“安全”选项卡,您可以通过 Windows GUI 查看(和取得)所有权。在“安全”选项卡上,单击“高级”按钮,然后在随后显示的“高级安全设置”对话框中,导航到“所有者”选项卡。
一旦您获得了文件/文件夹的所有权,Windows 就不会跟踪以前的所有者,因此无法恢复到以前的所有者。此外,如果您使用的文件系统类型不支持这些扩展属性(如 FAT16、FAT32、exFAT 等),则没有所有权或文件权限的概念。
您可以wmic
像这样查询所有权信息:
wmic path Win32_LogicalFileSecuritySetting where Path="C:\\windows\\winsxs" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
Run Code Online (Sandbox Code Playgroud)
不要使用,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
Run Code Online (Sandbox Code Playgroud)
cacls
并icalcs
可以编辑权限并takeown
允许取得所有权。AFAIK 它们也存在于 Windows 7 中。通常,一旦您执行了takeown
,您就可以跟进cacls
或icalcs
授予自己对该对象的权限。
Microsoft\xe2\x80\x99s 安全模型不允许将所有权授予某人,而只能获取所有权。这样,管理员(或其他特权用户)就无法直接获取其无法访问的文件的所有权、访问或修改该文件,以及在不通知原始所有者的情况下将其返还给原始所有者。
\n\n\n 归档时间: |
|
查看次数: |
114201 次 |
最近记录: |