拒绝使用低级功能的访问

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

此示例使用低级函数将空DACL附加到文件对象。对于使用高级安全功能的类似示例,请参阅拒绝访问.

该示例为安全描述符分配一个缓冲区,并调用InitializeSecurityDescriptor函数来初始化缓冲区。然后为ACL分配一个缓冲区,并调用InitializeAcl函数来初始化该缓冲区。接下来,它调用SetSecurityDescriptorDacl功能将ACL附加到安全描述符;并调用SetFileSecurity函数将安全描述符附加到文件中。

PSECURITY_DESCRIPTOR pSD;

PACL pACL;

DWORD cbACL = 1024;

/ *初始化安全描述符。*/

pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR,

SECURITY_DESCRIPTOR_MIN_LENGTH); /* defined in WINNT.H */

if (pSD == NULL) {

ErrorHandler("LocalAlloc");

goto Cleanup;

}

if(!InitializeSecurityDescriptor(pSD,

SECURITY_DESCRIPTOR_REVISION)){/ *在WINNT.H中定义* /

ErrorHandler("InitializeSecurityDescriptor");

goto Cleanup;

}

/ *初始化和处理。*/

pACL = (PACL) LocalAlloc(LPTR, cbACL);

if (pACL == NULL) {

ErrorHandler("LocalAlloc");

goto Cleanup;

}

如果(!InitializeAcl(氯化钠,cbACL,ACL_REVISION2)){

ErrorHandler("InitializeAcl");

goto Cleanup;

}

/ *向SD添加一个空ACL以拒绝访问。*/

if(!SetSecurityDescriptorDacl(pSD,

TRUE,/ * fDaclPresent标志* /

pACL,

FALSE)){/ *不是默认的DACL * /

ErrorHandler("SetSecurityDescriptorDacl");

goto Cleanup;

}

/ *使用新的SD作为文件的安全信息。*/

如果(!SetFileSecurity(lpszTestFile,id

DACL_SECURITY_INFORMATION,

pSD)){

ErrorHandler("SetFileSecurity");

goto Cleanup;

}

清理:

if(pSD != NULL)

LocalFree((HLOCAL) pSD);

if(pACL != NULL)

LocalFree((HLOCAL) pACL);