如何在cmd.exe中获取文件的组SID(不得使用PowerShell)
在Cmd.exe中获取文件组SID的非PowerShell方法
方法1:使用icacls命令(推荐,系统自带且功能完善)
这是最可靠的方式,支持直接显示SID:
- 查看包含SID的完整权限信息:
输出中组的SID会以括号形式附在组名称后,例如icacls "C:\Path\To\Your\FileOrFolder"BUILTIN\Users (S-1-5-32-545) - 强制仅显示SID(不解析为友好名称):
此时所有权限主体都会以SID形式展示,直接找到对应组的条目即可icacls "C:\Path\To\Your\FileOrFolder" /showSid - 快速过滤组SID:结合
findstr缩小输出范围,比如:
(icacls "C:\test.txt" /showSid | findstr "S-1-"S-1-是Windows SID的固定前缀)
方法2:使用fsutil命令(适用于NTFS文件系统)
fsutil可以查询文件的安全属性,包含组SID:
fsutil file querysecurity "C:\Path\To\Your\File" dacl
执行后会输出文件的DACL列表,其中每条权限项都会标注对应的SID,找到组所属的条目即可。注意该命令需要管理员权限。
方法3:使用cacls命令(兼容旧版Windows)
这是较旧的权限查询工具,在无法解析组名称时会直接显示SID:
- 基础查询:
cacls "C:\Path\To\Your\File" - 导出权限到文件查看完整SID:
打开生成的cacls "C:\Path\To\Your\File" /S > permissions.txtpermissions.txt文件,即可看到包含SID的权限信息。
注意事项
- 部分受系统保护的文件需要以管理员身份运行cmd.exe才能获取完整权限信息。
- 若组的友好名称能被系统解析,部分命令会优先显示名称,此时使用
icacls /showSid可以强制输出SID。
内容的提问来源于stack exchange,提问作者Cedric Blancher
相关产品推荐
相关产品推荐

