4

我通常会通过调用以下方法获取 Active Directory 网络上成员计算机的可分辨名称:

TCHAR buff[256];
buff[0] = 0;
DWORD dwSz = SIZEOF(buff);
GetComputerObjectName(NameFullyQualifiedDN, buff, &dwSz);

但是,当该成员计算机当前未连接到 DC 时,就会出现问题。例如,如果我将我的工作笔记本电脑带回家,它将无法访问我们在工作中拥有的本地 AD,并且GetComputerObjectName会失败。(我相信错误代码为 1355 或 ERROR_NO_SUCH_DOMAIN。)

所以我的问题是,在这种情况下,有没有办法获得成员计算机的专有名称?

4

3 回答 3

1

如果您不介意我说,我认为您尝试做的事情有些缺陷。

FQDN 仅在成员计算机连接到域时才真正有效。如果您离线登录到机器(根据您的描述,我假设一定是这种情况),则机器不再被认为在域上具有 FQDN。

毕竟,当你离线时,一些狡猾的系统管理员可能会在 AD 中移动机器的帐户,以便下次你从它登录域时,它的 FQDN 已经改变。

您引用的注册表项确实提供了 FQDN,但是当机器处于脱机状态时,我是否应该将其视为最后记录值的缓存。

如果我是你,我会处理 GetComputerObjectName() 抛出的异常,并改用gethostname()之类的东西。

干杯,伊恩。

于 2013-01-16T07:45:18.023 回答
0

也许带有 ComputerNameDnsFullyQualified NameType 的 GetComputerNameEx 对与 DC 通信的依赖性较小?

于 2013-01-16T14:48:05.300 回答
0

唔。所以没有人知道,哈?

我唯一疯狂的猜测是从 GPO 的此注册表项中获取它:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Distinguished-Name

所以你怎么看?

于 2013-01-15T23:39:23.620 回答