安全全局函数

这些函数支持修改 SID 和 ACL 对象。

重要

下表中列出的函数不能在 Windows 运行时执行的应用程序中使用。

名称 描述
AtlGetDacl 调用此函数可检索指定对象的自由访问控制列表 (DACL) 信息。
AtlSetDacl 调用此函数可设置指定对象的自由访问控制列表 (DACL) 信息。
AtlGetGroupSid 调用此函数可检索对象的组安全标识符 (SID)。
AtlSetGroupSid 调用此函数可设置对象的组安全标识符 (SID)。
AtlGetOwnerSid 调用此函数可检索对象的所有者安全标识符 (SID)。
AtlSetOwnerSid 调用此函数可设置对象的所有者安全标识符 (SID)。
AtlGetSacl 调用此函数可检索指定对象的系统访问控制列表 (SACL) 信息。
AtlSetSacl 调用此函数可设置指定对象的系统访问控制列表 (SACL) 信息。
AtlGetSecurityDescriptor 调用此函数可检索给定对象的安全说明符。

要求

标头: atlsecurity.h

AtlGetDacl

调用此函数可检索指定对象的自由访问控制列表 (DACL) 信息。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlGetDacl(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    CDacl* pDacl) throw();

参数

hObject
要从中检索安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

pDacl
指向将包含检索的安全信息的 DACL 对象的指针。

返回值

如果成功,则返回 true;如果失败,则返回 false。

备注

在调试版本中,如果 hObjectpDacl 无效,将发生断言错误。

AtlSetDacl

调用此函数可设置指定对象的自由访问控制列表 (DACL) 信息。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlSetDacl(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    const CDacl& rDacl,
    DWORD dwInheritanceFlowControl = 0) throw(...);

参数

hObject
要为其设置安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

rDacl
包含新安全信息的 DACL。

dwInheritanceFlowControl
继承流控制。 此值可以是 0(默认)、PROTECTED_DACL_SECURITY_INFORMATION 或UNPROTECTED_DACL_SECURITY_INFORMATION。

返回值

如果成功,则返回 true;如果失败,则返回 false。

备注

在调试版本中,如果 hObject 无效,或者 dwInheritanceFlowControl 不是三个允许值之一,则会发生断言错误。

要求

标头: atlsecurity.h

AtlGetGroupSid

调用此函数可检索对象的组安全标识符 (SID)。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlGetGroupSid(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    CSid* pSid) throw(...);

参数

hObject
要从中检索安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

pSid
指向将包含新安全信息的 CSid 对象的指针。

返回值

如果成功,则返回 true;如果失败,则返回 false。

要求

标头: atlsecurity.h

AtlSetGroupSid

调用此函数可设置对象的组安全标识符 (SID)。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlSetGroupSid(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    const CSid& rSid) throw(...);

参数

hObject
要为其设置安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

rSid
包含新安全信息的 CSid 对象。

返回值

如果成功,则返回 true;如果失败,则返回 false。

要求

标头: atlsecurity.h

AtlGetOwnerSid

调用此函数可检索对象的所有者安全标识符 (SID)。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlGetOwnerSid(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    CSid* pSid) throw(...);

参数

hObject
要从中检索安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

pSid
指向将包含新安全信息的 CSid 对象的指针。

返回值

如果成功,则返回 true;如果失败,则返回 false。

要求

标头: atlsecurity.h

AtlSetOwnerSid

调用此函数可设置对象的所有者安全标识符 (SID)。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlSetOwnerSid(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    const CSid& rSid) throw(...);

参数

hObject
要为其设置安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

rSid
包含新安全信息的 CSid 对象。

返回值

如果成功,则返回 true;如果失败,则返回 false。

要求

标头: atlsecurity.h

AtlGetSacl

调用此函数可检索指定对象的系统访问控制列表 (SACL) 信息。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlGetSacl(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    CSacl* pSacl,
    bool bRequestNeededPrivileges = true) throw(...);

参数

hObject
要从中检索安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

pSacl
指向将包含检索的安全信息的 SACL 对象的指针。

bRequestNeededPrivileges
如果为 true,函数将尝试启用 SE_SECURITY_NAME 特权,并在完成时还原它。

返回值

如果成功,则返回 true;如果失败,则返回 false。

注解

如果要在许多不同的对象上多次调用 AtlGetSacl,在调用函数之前启用一次 SE_SECURITY_NAME 特权,并将 bRequestNeededPrivileges 设置为 false,会更高效。

要求

标头: atlsecurity.h

AtlSetSacl

调用此函数可设置指定对象的系统访问控制列表 (SACL) 信息。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlSetSacl(
    HANDLE hObject,
    SE_OBJECT_TYPE ObjectType,
    const CSacl& rSacl,
    DWORD dwInheritanceFlowControl = 0,
    bool bRequestNeededPrivileges = true) throw(...);

参数

hObject
要为其设置安全信息的对象的句柄。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,该值指示 hObject 参数标识的对象的类型。

rSacl
包含新安全信息的 SACL。

dwInheritanceFlowControl
继承流控制。 此值可以是 0(默认)、PROTECTED_SACL_SECURITY_INFORMATION 或UNPROTECTED_SACL_SECURITY_INFORMATION。

bRequestNeededPrivileges
如果为 true,函数将尝试启用 SE_SECURITY_NAME 特权,并在完成时还原它。

返回值

如果成功,则返回 true;如果失败,则返回 false。

注解

在调试版本中,如果 hObject 无效,或者 dwInheritanceFlowControl 不是三个允许值之一,则会发生断言错误。

如果要在许多不同的对象上多次调用 AtlSetSacl,在调用函数之前启用一次 SE_SECURITY_NAME 特权,并将 bRequestNeededPrivileges 设置为 false,会更高效。

要求

标头: atlsecurity.h

AtlGetSecurityDescriptor

调用此函数可检索给定对象的安全说明符。

重要

此函数不能用于在 Windows 运行时中执行的应用程序。

inline bool AtlGetSecurityDescriptor(
    LPCTSTR pszObjectName,
    SE_OBJECT_TYPE ObjectType,
    CSecurityDesc* pSecurityDescriptor,
    SECURITY_INFORMATION requestedInfo = OWNER_SECURITY_INFORMATION |
    GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION |
    SACL_SECURITY_INFORMATION,
bool bRequestNeededPrivileges = true) throw(...);

参数

pszObjectName
指向以 null 结尾的字符串的指针,指定要从中检索安全信息的对象的名称。

ObjectType
指定 SE_OBJECT_TYPE 枚举中的一个值,指示 pszObjectName 参数标识的对象的类型。

pSecurityDescriptor
接收请求的安全描述符的对象。

requestedInfo
一组 SECURITY_INFORMATION 位标志,指示要检索的安全信息的类型。 此参数可以是以下值的组合。

bRequestNeededPrivileges
如果为 true,函数将尝试启用 SE_SECURITY_NAME 特权,并在完成时还原它。

返回值

如果成功,则返回 true;如果失败,则返回 false。

备注

如果要在许多不同的对象上多次调用 AtlGetSecurityDescriptor,在调用函数之前启用一次 SE_SECURITY_NAME 特权,并将 bRequestNeededPrivileges 设置为 false,会更高效。

要求

标头: atlsecurity.h

另请参阅

函数