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 名。 この名前は、 HostName.DomainNameという形式で DNS ホスト名と DNS ドメイン名を組み合わせたものです。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの完全修飾 DNS 名を受け取ります。
ComputerNameDnsHostname
ローカル コンピューターの DNS ホスト名。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの DNS ホスト名を受け取ります。
ComputerNameNetBIOS
ローカル コンピューターの NetBIOS 名。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの NetBIOS 名を受け取ります。
ComputerNamePhysicalDnsDomain
ローカル コンピューターに割り当てられた DNS ドメインの名前。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの名前ではなく、ローカル コンピューターの DNS ドメイン名を受け取ります。
ComputerNamePhysicalDnsFullyQualified
コンピューターを一意に識別する完全修飾 DNS 名。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの名前ではなく、ローカル コンピューターの完全修飾 DNS 名を受け取ります。

この完全修飾 DNS 名は、 HostName.DomainNameという形式で DNS ホスト名と DNS ドメイン名を組み合わせたものです。

ComputerNamePhysicalDnsHostname
ローカル コンピューターの DNS ホスト名。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer は、クラスター仮想サーバーの名前ではなく、ローカル コンピューターの DNS ホスト名を受け取ります。
ComputerNamePhysicalNetBIOS
ローカル コンピューターの NetBIOS 名。 ローカル コンピューターがクラスター内のノードである場合、 lpBuffer はクラスター仮想サーバーの名前ではなく、ローカル コンピューターの NetBIOS 名を受け取ります。

[out] lpBuffer

コンピューター名またはクラスター仮想サーバー名を受け取るバッファーへのポインター。

DNS では長い名前が許可されるため、名前の長さはMAX_COMPUTERNAME_LENGTH文字より大きい場合があります。 このバッファーが十分な大きさになるようにするには、このパラメーターを NULL に設定し、 lpnSize パラメーターで返される必要なバッファー サイズを使用します。

[in, out] nSize

入力時に、バッファーのサイズを TCHAR で指定します。 出力時に、 は宛先バッファーにコピーされた TCHAR の 数を受け取ります。終端の null 文字は含まれません。

バッファーが小さすぎると、関数は失敗し、 GetLastError は ERROR_MORE_DATAを返します。 このパラメーターは、終端の null 文字を含め、必要なバッファーのサイズを受け取ります。

lpBufferNULL の場合、このパラメーターは 0 である必要があります。

戻り値

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 使用可能な値は次のとおりです。

リターン コード 説明
ERROR_MORE_DATA
lpBuffer バッファーが小さすぎます。 lpnSize パラメーターには、名前を受け取るために必要なバイト数が含まれています。

注釈

ローカル コンピューターにグループ ポリシーが設定されていない場合、 GetComputerNameEx 関数は、システムの起動時に確立された NetBIOS または DNS 名を取得します。 グループ ポリシーが設定されている場合、この関数はグループ ポリシーによって設定されたプライマリ ドメイン名を返します。 SetComputerName 関数または SetComputerNameEx 関数によって行われた名前の変更は、ユーザーがコンピューターを再起動するまで有効になりません。

ローカル コンピューターが DNS 名を使用するように構成されていない場合、 GetComputerNameEx は DNS 情報を返しません。 これを実行するようにコンピューターを構成するには、オペレーティング システムのヘルプに記載されている手順に従って、コンピューターのプライマリ DNS サフィックスを変更してから、コンピューターを再起動します。

ローカル コンピューターがクラスター内のノードである場合、この関数の動作が影響を受ける可能性があります。 詳細については、「 ResUtilGetEnvironmentWithNetName 」および「 UseNetworkName」を参照してください

コンピューターの FQDN がドメインの FQDN と一致しないさまざまな DNS レイアウトを使用する環境で作業している場合は、代わりに 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);
    }
}

Note

sysinfoapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetComputerNameEx を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー sysinfoapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

COMPUTER_NAME_FORMAT

コンピューター名

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

システム情報関数