Проблема с получением списка локальных групп с использованием Core Services в macOS Catalina - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь получить список всех локальных групп, использующих Core Services, но он не работает, как я ожидаю. По какой-то причине, когда я использую CSGetLocalIdentityAuthority() и передаю его CSIdentityQueryCreateForName, я получаю только те группы, которые имеют членов или являются подгруппой другой группы.

Так что, если я создаю новую группу и не добавляю Участники этого, он не будет возвращен через CSIdentityQuery. Вот мой код Что мне не хватает? Любая помощь или ссылка на ресурс будет полезна.

    CSIdentityAuthorityRef auth = CSGetLocalIdentityAuthority();

    CSIdentityQueryRef queryRef = CSIdentityQueryCreateForName(kCFAllocatorDefault, CFSTR(""), 
                                                               kCSIdentityQueryStringBeginsWith,
                                                               kCSIdentityClassGroup, auth);

    CFErrorRef error;
    BOOL success = CSIdentityQueryExecute(queryRef, kCSIdentityQueryIncludeHiddenIdentities, &error);

    if(success)
    {
        CFArrayRef results = CSIdentityQueryCopyResults(queryRef);
        long numResults = CFArrayGetCount(results);

        for(auto i = 0; i < numResults; ++i)
        {
            CSIdentityRef obj = (CSIdentityRef)CFArrayGetValueAtIndex(results, i);
            CFStringRef fullName = CSIdentityGetFullName(obj);    
        }
    }
...