GetComputerNameExA 函式 (sysinfoapi.h)
擷取與本機計算機相關聯的 NetBIOS 或 DNS 名稱。 當系統從登錄讀取名稱時,會在系統啟動時建立名稱。
語法
BOOL GetComputerNameExA(
[in] COMPUTER_NAME_FORMAT NameType,
[out] LPSTR lpBuffer,
[in, out] LPDWORD nSize
);
參數
[in] NameType
要擷取的名稱類型。 此參數是 來自COMPUTER_NAME_FORMAT 列舉類型的值。 下表提供其他資訊。
[out] lpBuffer
接收電腦名稱或叢集虛擬伺服器名稱之緩衝區的指標。
名稱的長度可能大於MAX_COMPUTERNAME_LENGTH字元,因為 DNS 允許較長的名稱。 若要確保這個緩衝區夠大,請將此參數設定為 NULL ,並使用 lpnSize 參數中傳回的必要緩衝區大小。
[in, out] nSize
在輸入上,以 TCHAR 指定緩衝區的大小。 在輸出中,接收複製到目的地緩衝區的 TCHA 數目 ,不包括終止 Null 字元。
如果緩衝區太小,則函式會失敗, 而且 GetLastError 會傳回ERROR_MORE_DATA。 此參數會接收所需的緩衝區大小,包括終止 的 Null 字元。
如果 lpBuffer 為 NULL,此參數必須為零。
傳回值
如果函式成功,則傳回值是非零值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的值如下。
傳回碼 | Description |
---|---|
|
lpBuffer 緩衝區太小。 lpnSize 參數包含接收名稱所需的位元組數目。 |
備註
如果未設定本機計算機的組策略, GetComputerNameEx 函式會擷取在系統啟動時建立的 NetBIOS 或 DNS 名稱。 如果已設定組策略,函式會傳回組策略所設定的主要功能變數名稱。 在使用者重新啟動電腦之前, SetComputerName 或 SetComputerNameEx 函式所做的名稱變更不會生效。
如果本機計算機未設定為使用 DNS 名稱, GetComputerNameEx 將不會傳回 DNS 資訊。 若要將計算機設定為這樣做,請遵循操作系統說明中所述的步驟,並變更計算機的主要 DNS 後綴,然後重新啟動電腦。
如果本機計算機是叢集中的節點,此函式的行為可能會受到影響。 如需詳細資訊,請參閱 ResUtilGetEnvironmentWithNetName 和 UseNetworkName。
如果您使用使用不同 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 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | sysinfoapi.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |
另請參閱
ResUtilGetEnvironmentWithNetName
ResUtilSetResourceServiceEnvironment