C语言怎么获取完整的计算机名称

现在使用WindowsAPIGetComputerName()只能获取到计算机名后面的.域名获取不到比如说完整的计算机名称是A10111212.xxx.intra,Get... 现在使用Windows API GetComputerName() 只能获取到计算机名 后面的.域名获取不到
比如说完整的计算机名称是A10111212.xxx.intra,GetComputerName() 只能获取到A10111212。请问大牛们,怎么才能得到完整的A10111212.xxx.intra 或者能获取到域名xxx.intra也行
展开
 我来答
hwd0312
推荐于2018-05-15 · TA获得超过4336个赞
知道小有建树答主
回答量:1043
采纳率:100%
帮助的人:169万
展开全部

用GetComputerNameEx()函数。

函数原型:

BOOL WINAPI GetComputerNameEx(
  _In_    COMPUTER_NAME_FORMAT NameType,
  _Out_   LPTSTR               lpBuffer,
  _Inout_ LPDWORD              lpnSize
);

参数  NameType 名称类型,lpBuffer 接收名字的缓冲区指针   lpnSize接收名字的缓冲区大小

返回值:成功返回非0值,失败返回0

实例:

#define _WIN32_WINNT 0x0500

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain(void)
{
    TCHAR buffer[256] = TEXT("");
    TCHAR szDescription[8][32] = {TEXT("NetBIOS"), 
        TEXT("DNS hostname"), 
        TEXT("DNS domain"), 
        TEXT("DNS fully-qualified"), 
        TEXT("Physical NetBIOS"), 
        TEXT("Physical DNS hostname"), 
        TEXT("Physical DNS domain"), 
        TEXT("Physical DNS fully-qualified")};
    int cnf = 0;
    DWORD dwSize = sizeof(buffer);
    
    for (cnf = 0; cnf < ComputerNameMax; cnf++)
    {
        if (!GetComputerNameEx((COMPUTER_NAME_FORMAT)cnf, buffer, &dwSize))
        {
            _tprintf(TEXT("GetComputerNameEx failed (%d)\n"), GetLastError());
            return;
        }
        else _tprintf(TEXT("%s: %s\n"), szDescription[cnf], buffer);
        dwSize = _countof(buffer);
        ZeroMemory(buffer, dwSize);
    }
}
splashchaos
推荐于2017-12-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3669万
展开全部

用GetComputerNameEx(). 参数ComputerNameDnsFullyQualified。 MSDN上有完整的例子,这里转贴如下:

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

int main(int argc, char** argv) 
{
    TCHAR buffer[256] = TEXT("");
    TCHAR szDescription[8][32] = {TEXT("NetBIOS"), 
        TEXT("DNS hostname"), 
        TEXT("DNS domain"), 
        TEXT("DNS fully-qualified"), 
        TEXT("Physical NetBIOS"), 
        TEXT("Physical DNS hostname"), 
        TEXT("Physical DNS domain"), 
        TEXT("Physical DNS fully-qualified")};
    int cnf = 0;
    DWORD dwSize = sizeof(buffer);
    
    for (cnf = 0; cnf < ComputerNameMax; cnf++)
    {
        if (!GetComputerNameEx((COMPUTER_NAME_FORMAT)cnf, buffer, &dwSize))
        {
            _tprintf(TEXT("GetComputerNameEx failed (%d)\n"), GetLastError());
            return -1;
        }
        else _tprintf(TEXT("%s: %s\n"), szDescription[cnf], buffer);

        dwSize = _countof(buffer);
        ZeroMemory(buffer, dwSize);
    }    
    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海拉木齐
2014-12-26 · 超过21用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:26.7万
展开全部
hostname是个包含主机名/域名的字符串,函数通过给定的主机名,返回一个包含主机名称和主机地址信息的指针结构体。
、用这个 。希望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2014-12-26 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6441万
展开全部
是不是有GetComputerDomain()函数?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式