SetPrivateObjectSecurity

【勇芳软件工作室】汉化HomePreviousNext

SetPrivateObjectSecurity函数修改私有对象的安全描述符。

BOOL SetPrivateObjectSecurity(

SECURITY_INFORMATION 【SecurityInformation】,//安全信息的类型
PSECURITY_DESCRIPTOR 【ModificationDescriptor】,// SD应用于对象的地址
PSECURITY_DESCRIPTOR *【ObjectsSecurityDescriptor】,//对象的SD地址
PGENERIC_MAPPING 【GenericMapping】,//访问映射结构的地址
HANDLE 【代币】//客户端访问令牌的句柄
); 

参数

【SecurityInformation】

指定SECURITY_INFORMATION结构,标识由【ModificationDescriptor】参数指向的安全描述符的内容。

【ModificationDescriptor】

指向要应用于对象的SECURITY_DESCRIPTOR结构。

【ObjectsSecurityDescriptor】

指向要由此函数更改的SECURITY_DESCRIPTOR结构的指针。此安全描述符必须为自相关形式。

【GenericMapping】

指向GENERIC_MAPPING结构,指定通用映射到对象的特定和标准访问类型的映射。

【代币】

标识正在修改私有对象的安全性的客户端的访问令牌。需要此参数以确保客户端为新的所有者安全标识符(SID)提供合法值。必须打开令牌才能进行TOKEN_QUERY访问。

返回值

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

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

对象的安全描述符必须为自相关形式。

如果需要,SetPrivateObjectSecurity函数分配额外的内存以产生较大的安全描述符。

只有满足以下条件,SetPrivateObjectSecurity功能才能成功:

*如果对象的所有者正在设置,则调用进程必须具有WRITE_OWNER权限或对象的所有者。

*如果对象的自由访问控制列表(ACL)被设置,调用进程必须具有WRITE_DAC权限或者对象的所有者。

*如果对象的系统ACL被设置,则必须为调用进程启用SE_SECURITY_NAME特权。

调用此函数的过程不能模拟客户端。

也可以看看

CreatePrivateObjectSecurity, DestroyPrivateObjectSecurity, GENERIC_MAPPING, GetPrivateObjectSecurity, SECURITY_DESCRIPTOR, SECURITY_INFORMATION, SetFileSecurity, SetKernelObjectSecurity, SetUserObjectSecurity