如何使用核心服务创建本地组?核心服务的文档说"核心服务标识参考允许开发人员支持用户和组创建......"但没有关于如何做到这一点的示例。
更新。这是我到目前为止的代码,但它不起作用,错误代码返回 -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()
代表网络绑定的权威。