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。 在輸出中,接收複製到目的地緩衝區的 T CHAR 數目,不包括結束 null 字元。
如果緩衝區太小,函式會失敗,GetLastError 會傳回ERROR_MORE_DATA。 此參數會接收所需的緩衝區大小,包括終止 null 字元。
如果 lpBufferNULL,此參數必須是零。
傳回值
如果函式成功,則傳回值是非零值。
如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的值包括下列專案。
傳回碼 | 描述 |
---|---|
|
lpBuffer 緩衝區太小。 lpnSize 參數包含接收名稱所需的位元元數目。 |
言論
如果未為本機計算機設定組策略,則 getComputerNameEx 函式
如果本機計算機未設定為使用 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 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | sysinfoapi.h (包括 Windows.h) |
連結庫 | Kernel32.lib |
DLL | Kernel32.dll |
另請參閱
ResUtilGetEnvironmentWithNetName
ResUtilSetResourceServiceEnvironment