c++ - 如何在未使用 C++ 连接到 DC 时获取成员计算机的专有名称

标签 c++ winapi networking active-directory distinguishedname

我通常会通过调用以下方式获取 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/

相关文章:

python - python2.5中的Exception_Record问题

c++ - win32 API编程

linux - 如何向套接字提供目标MAC地址

performance - TCP 接收窗口

docker - iptables:无链/目标/匹配错误(使用docker网络创建)

c++ - 对参数依赖查找和友元函数定义的混淆

c++ - 在矩阵上赋值

c++ - GET_WHEEL_DELTA_WPARAM 从不返回负数

c++ - Mingw-64 with Netbeans(无法正确启动 0xc000007cb)

c++ - 如果最高有效字节的最高有效位为1,则样本为负