多用户环境下内核对象共享问题

来源:互联网 发布:网络授权申请书 编辑:程序博客网 时间:2024/05/21 04:01

在多用户环境下,可命名内核对象,如CreateMutex,CreateHandle,CreateFileMapping等共享方法需注意2点:

1. 建立everyone可访问的安全描述符,而不能直接使用NULL

2. 名字对象使用Global\前缀


    SECURITY_ATTRIBUTES sa;
    SECURITY_DESCRIPTOR sd;

    InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(&sd,TRUE,NULL,FALSE);
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.bInheritHandle = TRUE;
    sa.lpSecurityDescriptor = &sd;
    m_hMutex = CreateFileMapping((HANDLE) 0xFFFFFFFF, 
            &sa, PAGE_READWRITE, 0, 400 * 1024 * 1024, 
            __TEXT("Global\\MMFSharedData"));