我是Mac开发的新手。 我正在使用Objective-C,我想知道如何找到登录到Mac机器的用户的域名和用户SID。 在Windows中,我们提供由Microsoft提供的APIS,它将告诉我们来自Active Directory的用户信息。我正在为Mac开发寻找类似的选项。
我想再知道一件事。在Mac中,我们可以使用getuid(void)函数获取用户的ID。但它对所有域用户都是独一无二的吗?如果不是,那么请告诉我任何有关的问题,以便我可以维护一个唯一的ID来区分域中的所有用户。
注意:我在考虑所有Mac机都连接到Windows Active Directory。请指导我。
谢谢, Tausif。
答案 0 :(得分:0)
对于用户名,您可以使用:
NSString * NSUserName( void );
NSString * NSFullUserName( void );
来自<Foundation/Foundation.h>
对于用户ID,只需使用:
uid_t getuid( void );
来自<unistd.h>
答案 1 :(得分:0)
使用BSD的membership API,您可以在域控制器中查询用户的SID
- (NSText*)getSidForUser:(NSText*)user
{
uuid_t uuid;
// change the type (ID_TYPE_USERNAME) for different types of data, such as Group
if(mbr_identifier_to_uuid(ID_TYPE_USERNAME, [user UTF8String], [user length], uuid) != 0)
{
// handle error
return nil;
}
nt_sid_t ntSid;
if(mbr_uuid_to_sid(uuid, &ntSid) != 0)
{
// handle error
return nil;
}
char buffer[200] = {0};
if(mbr_sid_to_string(&ntSid, buffer) != 0)
{
// handle error
return nil;
}
NSString* sid = [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
return sid;
}