Я думаю, что в вашем случае вам нужно явно разрешить полный доступ к вашему мьютексу через инициализацию соответствующих атрибутов безопасности.
Попробуйте создать мьютекс следующим образом (рассмотрите его как полупсевдокод):
SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
CreateMutex(&sa, ...);
И, кстати - нормально использовать CreateMutex , чтобы открыть существующий мьютекс. Но OpenMutex позволяет вам указать необходимый уровень доступа.
Также обратите внимание, что если вам нужен действительно глобальный мьютекс - вам придется добавить к его имени префикс "Global \" (см. Статью MSDN "Пространства имен объектов ядра")