我通常会通过调用以下方式获取 Active Directory 网络上成员计算机的可分辨名称:
TCHAR buff[256];
buff[0] = 0;
DWORD dwSz = SIZEOF(buff);
GetComputerObjectName(NameFullyQualifiedDN, buff, &dwSz);
但当该成员计算机当前未连接到 DC 时,就会出现问题。例如,如果我将我的工作笔记本电脑带回家,它将无法访问我们工作的本地 AD,并且 GetComputerObjectName
将失败。 (我相信错误代码 1355 或 ERROR_NO_SUCH_DOMAIN
。)
所以我的问题是,在这种情况下,有什么方法可以获取成员计算机的专有名称吗?
最佳答案
如果您不介意我说的话,我认为您尝试做的事情有些缺陷。
FQDN 仅在成员计算机连接到域时才真正有效。如果您离线登录到机器(根据您的描述,我认为一定是这种情况),则该机器不能再被认为在域上具有 FQDN。
毕竟,当您处于离线状态时,一些狡猾的系统管理员可能会将计算机的帐户移动到 AD 中,以便您下次从它登录域时,它的 FQDN 已更改。
您引用的注册表项确实提供了 FQDN,但是,当机器处于离线状态时,我是否应该将其视为最后记录值的缓存。
如果我是你,我会处理 GetComputerObjectName() 抛出的异常并使用类似 gethostname() 的东西相反。
干杯,伊恩。
关于c++ - 如何在未使用 C++ 连接到 DC 时获取成员计算机的专有名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345952/