在MacOS Catalina上使用Core Services和Objective-C创建本地组



如何使用核心服务创建本地组?核心服务的文档说"核心服务标识参考允许开发人员支持用户和组创建......"但没有关于如何做到这一点的示例。

更新。这是我到目前为止的代码,但它不起作用,错误代码返回 -2,错误描述为空。真的很难找到任何解释如何做到这一点的文档。0 关于错误代码的信息。


CFStringRef realName = CFStringCreateWithCString(NULL, "newGroupTest",
kCFStringEncodingMacRoman);
CFStringRef posixName = CFStringCreateWithCString(NULL, "newgrptst1", 
kCFStringEncodingMacRoman);
AuthorizationRef auth;
OSStatus status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, 
kAuthorizationFlagDefaults, 
&auth);
CSIdentityAuthorityRef authority = CSGetDefaultIdentityAuthority();
CSIdentityRef identity = CSIdentityCreate(NULL, kCSIdentityClassGroup, realName,
posixName, kCSIdentityFlagNone, authority);
CFErrorRef error;
BOOL success = CSIdentityCommit(Identity, auth, &error);
if(!success)
{
CFIndex index = CFErrorGetCode(error);
CFStringRef desc = CFErrorCopyDescription(error);
const char* cDesc = CFStringGetCStringPtr(desc, CFStringGetSystemEncoding());  
}

找到问题所在。我没有使用正确的身份权限。若要创建本地组,需要使用获取本地标识颁发机构的CSGetLocaldentityAuthority(),该标识机构将标识存储在系统的本地标识,而不是CSGetDefaultIdentityAuthority()代表网络绑定的权威。

最新更新