共用方式為


GetComputerNameExA 函式 (sysinfoapi.h)

擷取與本機計算機相關聯的 NetBIOS 或 DNS 名稱。 當系統從登錄讀取名稱時,系統會在系統啟動時建立名稱。

語法

BOOL GetComputerNameExA(
  [in]      COMPUTER_NAME_FORMAT NameType,
  [out]     LPSTR                lpBuffer,
  [in, out] LPDWORD              nSize
);

參數

[in] NameType

要擷取的名稱類型。 此參數是來自 COMPUTER_NAME_FORMAT 列舉型別的值。 下表提供其他資訊。

價值 意義
ComputerNameDnsDomain
指派給本機計算機的 DNS 網域名稱。 如果本機計算機是叢集中的節點,lpBuffer 會收到叢集虛擬伺服器的 DNS 功能變數名稱。
ComputerNameDnsFullyQualified
可唯一識別本機計算機的完整 DNS 名稱。 此名稱是 DNS 主機名和 DNS 功能變數名稱的組合,使用 HostName格式。DomainName。 如果本機計算機是叢集中的節點,lpBuffer 會收到叢集虛擬伺服器的完整 DNS 名稱。
ComputerNameDnsHostname
本機電腦的 DNS 主機名。 如果本機計算機是叢集中的節點,lpBuffer 會收到叢集虛擬伺服器的 DNS 主機名。
ComputerNameNetBIOS
本機電腦的 NetBIOS 名稱。 如果本機計算機是叢集中的節點,lpBuffer 會收到叢集虛擬伺服器的 NetBIOS 名稱。
ComputerNamePhysicalDnsDomain
指派給本機計算機的 DNS 網域名稱。 如果本機計算機是叢集中的節點,lpBuffer 會收到本機計算機的 DNS 功能變數名稱,而不是叢集虛擬伺服器的名稱。
ComputerNamePhysicalDnsFullyQualified
可唯一識別計算機的完整 DNS 名稱。 如果本機計算機是叢集中的節點,lpBuffer 會收到本機計算機的完整 DNS 名稱,而不是叢集虛擬伺服器的名稱。

完整 DNS 名稱是 DNS 主機名稱和 DNS 功能變數名稱的組合,其格式為 HostNameDomainName

ComputerNamePhysicalDnsHostname
本機電腦的 DNS 主機名。 如果本機計算機是叢集中的節點,lpBuffer 會收到本機計算機的 DNS 主機名,而不是叢集虛擬伺服器的名稱。
ComputerNamePhysicalNetBIOS
本機電腦的 NetBIOS 名稱。 如果本機計算機是叢集中的節點,lpBuffer 會收到本機計算機的 NetBIOS 名稱,而不是叢集虛擬伺服器的名稱。

[out] lpBuffer

接收電腦名稱或叢集虛擬伺服器名稱之緩衝區的指標。

名稱的長度可能大於MAX_COMPUTERNAME_LENGTH個字元,因為 DNS 允許較長的名稱。 若要確保此緩衝區夠大,請將此參數設定為 NULL,並使用 lpnSize 參數中所傳回的必要緩衝區大小。

[in, out] nSize

在輸入上,指定緩衝區的大小,TCHAR。 在輸出中,接收複製到目的地緩衝區的 T CHAR 數目,不包括結束 null 字元。

如果緩衝區太小,函式會失敗,GetLastError 會傳回ERROR_MORE_DATA。 此參數會接收所需的緩衝區大小,包括終止 null 字元。

如果 lpBufferNULL,此參數必須是零。

傳回值

如果函式成功,則傳回值是非零值。

如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的值包括下列專案。

傳回碼 描述
ERROR_MORE_DATA
lpBuffer 緩衝區太小。 lpnSize 參數包含接收名稱所需的位元元數目。

言論

如果未為本機計算機設定組策略,則 getComputerNameEx 函式 會擷取在系統啟動時建立的 NetBIOS 或 DNS 名稱。 如果設定組策略,函式會傳回組策略所設定的主要功能變數名稱。 SetComputerNameSetComputerNameEx 函式所做的名稱變更,在使用者重新啟動電腦之前,才會生效。

如果本機計算機未設定為使用 DNS 名稱,GetComputerNameEx 將不會傳回 DNS 資訊。 若要設定計算機以執行這項操作,請遵循操作系統說明中所述的步驟,並變更計算機的主要 DNS 後綴,然後重新啟動電腦。

如果本機計算機是叢集中的節點,此函式的行為可能會受到影響。 如需詳細資訊,請參閱 ResUtilGetEnvironmentWithNetNameUseNetworkName

如果您要使用使用不同 DNS 配置的環境,其中計算機的 FQDN 不符合其網域的 FQDN,請改用 LsaQueryInformationPolicy

若要編譯使用此函式的應用程式,請將_WIN32_WINNT巨集定義為0x0500或更新版本。 如需詳細資訊,請參閱使用 Windows 標頭

例子

#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 = _countof(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);
    }
}

注意

sysinfoapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 GetComputerNameEx 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 sysinfoapi.h (包括 Windows.h)
連結庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

COMPUTER_NAME_FORMAT

電腦名稱

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

系統資訊函式