Delphi- 如何获取我的完整域名

Delphi- How to get my full domain name

在我的程序中,我试图检索当前机器的域名。 我发现了一些人们在论坛上写的代码,但它们似乎都部分起作用。

我的意思是我的域名类似于 'mydomain.mydomain11.com' 在尝试检索域名时,我总是只得到 'mydomain' 而不是 'mydomain.mydomain11'

我也试过使用 'GetEnvironmentVariable' 函数,returns 同样的事情。

如果可能的话,我想知道如何获取完整路径。

我的最终目标是使用 LDAP 协议查询活动目录,所以了解如何将域路径分块到类似这样的东西真的很有帮助:

CN=Users,DC=mydomain,DC=mydomain11,DC=com

但现在获取我的完整域名就可以了..

您可以使用带有 ComputerNamePhysicalDnsDomain 参数的 GetComputerNameEx 函数:

分配给本地计算机的 DNS 域的名称。如果本地计算机是集群中的一个节点,lpBuffer 接收本地计算机的 DNS 域名,而不是集群虚拟服务器的名称。`

如果您的目标是连接到 LDAP 以搜索目录中的对象,通常的方法是连接到 RootDSE。这是一个 example.

ref What's the best method for getting the local computer name in Delphi

参考 http://www.delphipages.com/forum/showthread.php?t=29823 在 LorAn 下,发音为 Lorne - 很棒的 fetch 框架

在缓冲区大小的 Delphi 变量 MAXCHAR 中滚动,应该是可以在最短时间内返回的最大大小

function getDomain: string;
var
  vlDomainName : array[0..MAXCHAR] of char;
  vlSize : ^DWORD;
begin
  New(vlSize);
  vlSize^ := MAXCHAR;
  ExpandEnvironmentStrings(PChar('%USERDOMAIN%'), vlDomainName, vlSize^);
  Dispose(vlSize);
  Result := vlDomainName;
end;

得到DNSServer.DOMAIN.DOMAIN..

使用 ADSI 库 ADSystemInfo GetAnyDCName() 函数并按小数点拆分 [.]