c – 如何获取Windows域名?
如何获取机器的域名(如果机器实际上已加入域名)?
而且,当然,如果机器没有加入域,函数应该返回 > null,或 笔记: > Microsoft拥有知识库文章How to retrieve current user and domain names on Windows NT,Windows 2000,or Windows XP,它依赖于获取用户的安全令牌并调用LookupAccountSid. > LookupAccountSid Win32函数返回域的传统NetBIOS名称(例如AVATOPIA);并返回登录用户的域,这可能与机器不同 更新一 我也尝试使用ADs对象绑定到域的IADs接口: IADs domain; ADsGetObject("LDAP://rootDES",IDs,out domain); 这种方法的问题是: >您无法获取域名(仅可分辨名称) 更新二: 只要清楚我想要的是: >选择哪个单选按钮 奖金阅读 > How to get fully qualified domain name on windows in Delphi(用户域) 解决方法
干得好:
#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 = DsRoleGetPrimaryDomainInformation(NULL,DsRolePrimaryDomainInfoBasic,(PBYTE *)&info); if (dw != ERROR_SUCCESS) { wprintf(L"DsRoleGetPrimaryDomainInformation: %un",dw); return dw; } if (info->DomainNameDns == NULL) { wprintf(L"DomainNameDns is NULLn"); } else { wprintf(L"DomainNameDns: %sn",info->DomainNameDns); } return 0; } 任何使用 该函数返回three different domain names,例如: 域名森林名称:例如stackoverflow.com 如果机器未加入域,那么Forest和dns都是空白的,只有NetBios名称填写了工作组名称,例如: >域名森林名称:null 该函数还返回一个标志,指示机器是否连接到域: > DsRole_RoleMemberWorkstation:属于域的成员的工作站 或不: > DsRole_RoleStandaloneWorkstation:不是域的成员的工作站> DsRole_RoleStandaloneServer:不是域的成员的服务器 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |