检查用户是本地帐户还是域帐户
Check if a user is a local or domain account
给定OS X中用户的名称,就可以使用BSD成员函数查询其Active Directory SID。
但是,当在不是目录成员的计算机上提供本地用户名时,还会返回SID。
这里提供了一个检查本地登录用户是否是域帐户的解决方案,但这假设有问题的用户是当前会话的用户,但事实可能并非如此。此外,如果用户是移动帐户(漫游),则会找到主目录,并且返回错误。
那么,如何检查给定的用户名是本地用户还是域用户,其中用户名可以是任何名称,包括用于本地进程的名称?
使用OpenDirectoryAPI我已经成功完成了类似的任务,下面是适合您查询的修改解决方案:
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++LDAP检查用户是否是特定组的成员
- 如何范围检查 C++14 个用户定义的文本?
- 如何检查用户的输入是否有效以及我正在寻找的数字?
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 如何检查用户是否输入了元音字符?
- 有没有办法检查用户输入是否是数字?
- 如何检查用户输入是 1 还是 2
- 检查用户是否是 Windows 中本地计算机上的管理员C++
- 如何检查用户是否已打开应用程序
- 如何在 while 循环C++中检查 int 输入是否为空或用户按 Enter 键
- 如何检查用户输入仅包含字母
- 如何在内置或用户定义的文件夹中检查Imapifolder
- 如何检查用户何时按 Enter 键而不提供 C++ 值
- 检查用户输入是否正确的函数不起作用
- C 用户输入4个数字,并且该程序检查它们大于少于
- 数组 1D 我需要要求用户检查索引和打印值
- 检查用户输入的整数是否包含所有 1 或 0?
- 如何检查用户是否没有输入任何字符串
- c++ 根据随机生成的数组检查用户输入的值
- C++检查用户输入