gpt4 book ai didi

c++ - 检查用户是本地帐户还是域帐户

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:16 25 4
gpt4 key购买 nike

给定 OS X 中的用户名,可以使用 BSD membership functions 查询其 Active Directory SID .

但是,当在不是目录成员的计算机上提供本地用户名时,也会返回 SID。

提供检查本地登录用户是否为域账号的解决方案here ,但这假设有问题的用户是当前 session 的用户,情况可能并非如此。此外,如果用户是移动帐户(漫游),则会找到主目录并返回错误。

那么,如何检查给定的用户名是本地用户还是域用户,用户名可以是任何名称,包括用于本地进程的名称?

最佳答案

使用 OpenDirectory API 我已经设法完成了类似的任务,这里是适合您的查询的修改后的解决方案:

bool isDomainUser(std::string currentUser)
{
NSString *queryVal = [NSString stringWithUTF8String:currentUser.c_str()];

ODSession *session = [ODSession defaultSession];

ODNode *node = [ODNode nodeWithSession:session
type:kODNodeTypeAuthentication error:NULL];

ODQuery *query = [ODQuery queryWithNode:node forRecordTypes:kODRecordTypeUsers
attribute:kODAttributeTypeRecordName
matchType:kODMatchEqualTo
queryValues:queryVal
returnAttributes:kODAttributeTypeStandardOnly
maximumResults:0 error:NULL];

NSArray *records = [query resultsAllowingPartial:NO error:NULL];

for (ODRecord *record in records)
{
ODAttributeType type = @"dsAttrTypeStandard:OriginalAuthenticationAuthority";
NSArray *lines = [record valuesForAttribute:type error:nil];

if (lines)
{
for(NSString *line in lines)
{
if ([line hasPrefix:@"NetLogon"])
{
return true;
}
}
}
}

return false;
}

关于c++ - 检查用户是本地帐户还是域帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34047532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com