1

我是 Mac 开发的新手。我正在使用Objective-C,我想知道如何找到登录到Mac机器的用户的域名和用户SID。在 Windows 中,我们有 Microsoft 提供的 APIS,它会告诉我们来自 Active Directory 的用户信息。我正在为 Mac 开发寻找类似的选项。

我还想知道一件事。在 Mac 中,我们可以使用 getuid( void ) 函数获取用户 ID。但它对所有域用户都是唯一的吗?如果不是,那么请告诉我任何要调查的替代方法,以便我可以维护一个唯一的 ID 来区分域中的所有用户。

注意:这里我考虑所有 Mac 机器都连接到 Windows Active Directory。请指导我。

谢谢,陶西夫。

4

2 回答 2

0

对于用户名,您可以使用:

NSString * NSUserName( void );
NSString * NSFullUserName( void );

<Foundation/Foundation.h>

对于用户 ID,只需使用:

uid_t getuid( void );

<unistd.h>

于 2012-08-06T15:03:59.570 回答
0

使用 BSD 的成员资格 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;
}
于 2015-12-03T11:41:23.297 回答