如何获取计算机的域名(如果该计算机实际上已加入了域)?
当然,如果计算机没有加入域,则该函数应返回:
null
,或者- 一个空字符串,或者
- 计算机名称,或者
"."
注:
NetGetJoinInformation Win32 函数返回域的旧版 NetBIOS 名称(例如
AVATOPIA
),而不是域名(例如avatopia.local
)USERDOMAIN
环境变量返回登录用户的域,可能与计算机不同;也会返回域的旧版 NetBIOS 名称(例如AVATOPIA
)USERDNSDOMAIN
环境变量返回登录用户的域名,可能与计算机不同
Microsoft 有一篇知识库文章如何检索 Windows NT、Windows 2000 或 Windows XP 上的当前用户和域名,该文章依赖于获取用户的安全令牌并调用 LookupAccountSid。
- LookupAccountSid Win32 函数返回域的旧版 NetBIOS 名称(例如
AVATOPIA
);也会返回登录用户所在的域,可能与计算机不同
更新一
我也尝试使用 ADs 对象来绑定到域的 IADs
接口:
IADs domain;
ADsGetObject("LDAP://rootDES", IDs, out domain);
这种方法存在以下问题:
- 您无法获取域名(只能获取可分辨名称)。
- 如果用户没有权限查询AD,则无法正常工作。
- 如果用户不是活动目录中的有效用户,则无法正常工作。
- 它仅适用于Active Directory域。
更新二:
我想要的是:
- 选定了哪个单选按钮
- 选定框中有什么内容
额外阅读
- 如何在 Delphi 中获取 Windows 的完全限定域名(用户所在的域)
- .NET 中计算机的域名?(来自.NET)
System.DirectoryServices.ActiveDirectory.Domain
是否返回所需信息? - Cody Gray