GetSecurityInfo

来源:互联网 发布:俄罗斯域名注册 编辑:程序博客网 时间:2024/04/29 23:12
By Adam
ISecurityInformation::GetSecurity

该函数通过句柄找到某一对象,并获取该对象的安全描述符。

DWORD GetSecurityInfo(
  HANDLE
handle,
  SE_OBJECT_TYPE
ObjectType,
  SECURITY_INFORMATION
SecurityInfo,
  PSID*
ppsidOwner,
  PSID*
ppsidGroup,
  PACL*
ppDacl,
  PACL*
ppSacl,
  PSECURITY_DESCRIPTOR*
ppSecurityDescriptor
);

 

变量

handle

    [in] 该句柄变量用以指定GetSecurityInfo函数将获取哪个的安全描述符。

ObjectType

    [in]指定对象类型的枚举型变量

SecurityInfo

    [i]指定函数所获得的安全信息的类型,可以取以下值。

ValueMeaningDACL_SECURITY_INFORMATION如果这个标志被设置, ppDacl 变量将接收对象的自主访问控制列表GROUP_SECURITY_INFORMATION如果这个标志被设置, ppsidGroup变量将接收对象primary group的SIDOWNER_SECURITY_INFORMATION如果这个标志被设置, ppsidOwner变量将接收对象拥有者的SIDSACL_SECURITY_INFORMATION如果这个标志被设置, ppSacl 变量将接收对象的系统访问控制列表

 ppsidOwner

    [out] ppsidOwner是指向安全描述符中SID所有者的指针,该指针将返回到ppSecurityDescriptor。仅当对SecurityInfo设置了OWNER_SECURITY_INFORMATION时返回指针才有效。如果不需要SID所有者,该变量设置为NULL。

ppsidGroup

    [out]  ppsidGroup是指向primary group SID的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了GROUP_SECURITY_INFORMATION时返回指针才有效。如果不需要group SID,该变量设置为NULL。

ppDacl

    [out] ppDacl是指向DACL的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了DACL_SECURITY_INFORMATION时返回指针才有效。如果不需要DACL 

,该变量设置为NULL。

ppSacl

    [out] ppSacl是指向SACL的指针,该指针返回到ppSecurityDescriptor。仅当对SecurityInfo设置了SACL_SECURITY_INFORMATION时返回指针才有效。如果不需要SACL

,该变量设置为NULL。

ppSecurityDescriptor

     [out]该变量接受一个指向对象安全描述符的指针。当你使用完这个指针,通过LocalFree函数释放返回的缓冲。

 

返回值

如果函数成功,返回值为ERROR_SUCCESS。

如果函数失败,返回值为非零值,具体定义在Winerror.h中。

 

附注

如果ppsidOwner,ppsidGroup,ppDacl,以及ppSacl都是非空,并且SwcurityInfo指定了相应的类型,则前述的各个变量将接受其对应的指针,这些指针返回到ppSecurityDescriptor中。

当句柄被打开后,要从对象的安全描述符中读取Owner,group,或者DACL,调用程序必须得到读控制访问的许可。要得到读控制访问的许可,调用者必须是对象的拥有者或者对象的DACL必须被授予访问权。

当句柄被打开后,要从安全描述符中读取SACL,调用程序必须被授予ACCESS_SYSTEM_SECURITY的访问权。获得这个权限的适当方法是启用SE_SECURIYT_NAME特权,打开ACCESS_SYSTEM_SECURITY句柄,接着关闭特权。

 

 需求

ClientRequires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0.ServerRequires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.Header

Declared in Aclapi.h.

Library

Link to Advapi32.lib.

DLLRequires Advapi32.dll.

           

原创粉丝点击