SetNamedSecurityInfo 是 Windows 底层原子设置文件 DACL 的唯一可靠 API;需用绝对路径、有效 SID、管理员权限,配合 EXPLICIT_ACCESS 和 SetEntriesInAcl 构造 ACL,避免使用 SetFileSecurity 或硬编码用户名。怎么用 SetNamedSecurityInfo 设置文件 ACL(Windows 底层)直接调用 Windows API 是唯一真正细粒度控制文件 ACL 的方式,icacls 或属性 GUI 都是封装,没法满足底层定制需求。核心函数是 SetNamedSecurityInfo,它能原子性地写入 DACL(自主访问控制列表),不依赖 shell 或 .NET。实操要点:必须用 LPCTSTR(即 LPCWSTR)传入完整绝对路径,相对路径、短文件名(8.3)、UNC 路径带尾部反斜杠都会失败,错误码通常是 ERROR_INVALID_PARAMETER权限需通过 EXPLICIT_ACCESS 结构逐条构造,不能靠“继承+修改”这种高层逻辑;每条必须指定 grfAccessPermissions(如 GENERIC_READ)、grfAccessMode(SET_ACCESS/DENY_ACCESS)、Trustee(含 SID)调用前需确保进程有 SE_SECURITY_NAME 权限(通常需管理员 token),否则返回 ERROR_PRIVILEGE_NOT_HELD;普通用户即使对文件有 Full Control 也无法改其 DACL不要手动拼接 ACCESS_ALLOWED_ACE 结构——用 SetEntriesInAcl 将 EXPLICIT_ACCESS 数组转成有效 PACL,它会处理 ACE 大小、顺序、继承标志等细节怎么获取和验证目标用户的 SID(避免 ERROR_INVALID_SID)ACL 条目里 Trustee 字段不是用户名字符串,而是二进制 SID。硬编码字符串(如 "Everyone")或调用 LookupAccountName 失败,是 ACL 设置静默失败的最常见原因。安全做法:立即学习“C++免费学习笔记(深入)”; 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体

更多推荐