我怎样才能得到机器的域名(如果机器实际上已join到域)?
而且,当然,如果机器没有join到域中,函数应该返回
null ,或者
一个空string,或
机器的名称,或者
"."
备注 :
NetGetJoin@R_470_4045@ion Win32函数返回域(例如AVATOPIA )的传统NetBIOS名称,而不是域的名称(例如avatopia.local )
为什么从我的OncopyData返回TRUE时可能触发一个断点?
如何初始化堆栈?
如何在C编程中使用chroot函数?
在linux上执行pthread
创build一个库?
USERDOMAIN环境variables返回login用户的域名,这可能与本机不同; 并返回域的传统NetBIOS名称(如AVATOPIA )
USERDNSDOMAIN环境variables返回login用户的域名,这可能与本机不同
Microsoft有一篇知识库文章如何检索Windows NT,Windows 2000或Windows XP上的当前用户和域名,这些用户和域名依赖于获取用户的安全令牌并调用LookupAccountSid。
LookupAccountSid Win32函数返回域的传统NetBIOS名称(例如AVATOPIA ); 并返回login用户的域名,这可能与本机不同
更新一个
我也尝试使用ADs对象绑定到域的IADs接口:
IADs domain; ADsGetobject("LDAP://rootDES",IDs,out domain);
这种方法的问题是:
你不能得到域名(只有专有名称 )
它只适用于Active Directory域
更新二 :
只是为了清楚我想要的是:
哪个单选button被选中
(select)框中的内容
奖金阅读
如何在Delphi (用户的域) 上的Windows上获取完全合格的域名
机器在.NET中的域名? (从.NET)
非GPL XMPP客户端库
警告与铿锵++编译
由fork之后的子项创build的文件,是否也与父项共享?
无lockingalgorithm的指针alignment
干得好:
#include <Windows.h> #include <DSRole.h> #pragma comment(lib,"netapi32.lib") #include <stdio.h> int main(int argc,char ** argv) { DSROLE_PRIMARY_DOMAIN_INFO_BASIC * info; DWORD dw; dw = DsRoleGetPrimaryDomain@R_470_4045@ion(NULL,DsRolePrimaryDomainInfoBasic,(PBYTE *)&info); if (dw != ERROR_SUCCESS) { wprintf(L"DsRoleGetPrimaryDomain@R_470_4045@ion: %un",dw); return dw; } if (info->DomainNamedns == NULL) { wprintf(L"DomainNamedns is NULLn"); } else { wprintf(L"DomainNamedns: %sn",info->DomainNamedns); } return 0; }
任何在生产中使用DsRoleGetPrimaryDomain@R_470_4045@ion人都应该考虑调用DsRoleFreeMemory来在不再需要信息时释放内存块(如注释中的讨论)。
该函数返回三个不同的域名 ,例如:
域名森林名称 :例如: stackoverflow.com
域DNS名称 :例如: stackoverflow.com
域NetBIOS名称 :例如STACKOVERFLOW
如果机器没有加入到域中,那么Forest和dns都是空白的,只有NetBIOS名称填充了工作组的名称,例如:
域林名称 : null
域DNS名称 :例如null
域NetBIOS名称 :例如WORKGROUP
DsRole_RoleMemberWorkstation :作为域成员的工作站
DsRole_RoleMemberserver :是域成员的服务器
DsRole_RolePrimaryDomainController :主域控制器
DsRole_RoleBackupDomainController :备份域控制器
或不:
DsRole_RoleStandaloneWorkstation :不属于域成员的工作站
DsRole_RoleStandaloneserver :不是域成员的服务器
使用GetComputerNameEx你可以得到你的电脑名称和域名。
例:
TCHAR local[100]; DWORD hstSize = sizeof(local); GetComputerNameEx(ComputerNamednsDomain,local,&hstSize);
注意: ComputerNamednsDomain提供域名, ComputerNameNetBIOS提供本地工作组(计算机)名称。
您可以使用Win32_NTDomain类通过WMI获取域名。 该链接包含有关如何与WMI交互的样本的其他链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。