c++怎么在Windows下设置文件的安全访问控制列表(ACL)权限【底层】

SetNamedSecurityInfo 是 Windows 底层直接设置文件 ACL 的标准 API,需管理员权限、绝对路径,全量替换 DACL;构造时用 EXPLICIT_ACCESS 数组经 SetEntriesInAcl 生成 ACL,注意权限掩码、Trustee 形式及 SID 使用。怎么用 SetNamedSecurityInfo 设置文件 ACL(Windows 底层)直接调用 SetNamedSecurityInfo 是 Windows 下最接近"底层"的标准方式------它绕过 Shell、不依赖 PowerShell,也不走 .NET 封装,直接和 LSASS 通信。但必须注意:这不是"设置权限",而是"替换整个 DACL",搞错结构体或参数会直接锁死文件。必须以管理员权限运行进程,否则 ERROR_ACCESS_DENIED(即使你是文件所有者)SE_PRIVILEGE_ENABLED 权限不是默认开启的,得先用 AdjustTokenPrivileges 提权目标路径必须是绝对路径,相对路径会导致 ERROR_INVALID_PARAMETERACL 不是"追加"而是"全量替换",原 ACL 里已有的 ACE(比如 SYSTEM 的 FullControl)若没显式写进新 DACL,就会被删掉怎么构造正确的 EXPLICIT_ACCESS 并转成 ACL很多人卡在把"给 Users 组加读取"这种自然语言,翻译成 Win32 安全描述符结构。核心是两步:填 EXPLICIT_ACCESS 数组 → 调 SetEntriesInAcl 合成 ACL*。grfAccessMode 选 GRANT_ACCESS(不是 SET_ACCESS,后者会清空同类型旧 ACE)Trustee.TrusteeForm 必须是 TRUSTEE_IS_NAME,不能用 TRUSTEE_IS_SID 直接传字符串 SID,否则解析失败用户/组名必须用本地化名称(如中文系统写 "Users" 不行,得写 "用户" 或更稳妥的 SID 字符串 "S-1-5-32-545")dwAccessPermissions 推荐用 GENERIC_READ | GENERIC_EXECUTE,别硬凑 FILE_READ_DATA | FILE_EXECUTE,容易漏 FILE_LIST_DIRECTORY 导致目录打不开为什么 GetNamedSecurityInfo 返回的 DACL 总是 NULL不是代码写错了,大概率是没请求 OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION 这三个 flag 的组合。单独传 DACL_SECURITY_INFORMATION 会被系统忽略,返回空 DACL。调用 GetNamedSecurityInfo 时,securityInfo 参数必须至少包含 DACL_SECURITY_INFORMATION + OWNER_SECURITY_INFORMATION返回的 PACL 是只读副本,不能直接修改,必须用 CopySid 和 InitializeAcl 新建一个如果文件继承自父目录,GetNamedSecurityInfo 返回的 DACL 可能含 INHERITED_ACE 标志,但 SetEntriesInAcl 不识别这个标志,得手动清除 ACE_INHERITED_ACE 位再添加用 icacls 验证或回滚时要注意什么命令行工具是调试 ACL 最快的手段,但它和 API 行为不完全一致------比如 icacls file /grant Users:(RX) 默认开启继承,而 SetNamedSecurityInfo 默认关闭继承。 Vozo Vozo是一款强大的AI视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。

相关推荐
難釋懷1 小时前
Redis网络模型-异步IO
网络·数据库·redis
wyhua20081 小时前
Installing the classic Jupyter Notebook interface
python
yexuhgu1 小时前
Redis怎样节省海量状态存储内存_利用Bitmap结构替代传统String存储
jvm·数据库·python
chushiyunen1 小时前
postgresql时序数据库插件timescaledb语法
数据库·postgresql·时序数据库
hughnz1 小时前
下一代地热能的技术障碍
java·大数据·数据库
极光代码工作室1 小时前
基于大数据的交通流量分析系统
大数据·hadoop·python·数据分析·数据可视化
Devin~Y1 小时前
大厂Java面试实录:Spring Boot + JVM + Redis/Kafka + 微服务治理 + Spring AI/RAG 一条龙
java·jvm·spring boot·redis·spring cloud·kafka·openfeign
小李云雾1 小时前
慧校坊-二手校园交易平台-------项目总结
数据库·后端·程序人生·fastapi·项目
2301_779622411 小时前
如何修复SQL嵌套查询死锁_调整锁粒度与执行顺序
jvm·数据库·python