命名对象继承2-验证Open*命名对象安全属性的传递

接上一篇

这次是验证Open*(本文使用OpenMutex函数)的命名对象在继承中安全属性的传递

    SECURITY_ATTRIBUTES sa; //设置句柄安全性
    sa.nLength = sizeof(sa);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
    HANDLE hMutex1 = CreateMutex(&sa, FALSE, TEXT("JeffObj")); //创建对象句柄1

    HANDLE hMutex2 = OpenMutex(MUTEX_ALL_ACCESS, FALSE, TEXT("JeffObj")); //继承一个对象句柄2
    
    DWORD dwFlags1;
    GetHandleInformation(hMutex1, &dwFlags1); //验证对象句柄1的继承性 
    BOOL fHandleIsInheritable1 = (0 != (dwFlags1 & HANDLE_FLAG_INHERIT));
    DWORD dwFlags2;
    GetHandleInformation(hMutex2, &dwFlags2); //验证对象句柄1的继承性,判断是否继承安全性成功
    BOOL fHandleIsInheritable2 = (0 != (dwFlags2 & HANDLE_FLAG_INHERIT));
    CloseHandle(hMutex1);
    CloseHandle(hMutex2);

可以看到dwFlags1和dwFlags2的值不同,所以继承对象句柄中,安全性继承失败

原文地址:https://www.cnblogs.com/zero5/p/3479351.html