次の方法で共有


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

完全修飾 DNS 名は、HostNameの形式を使用して、DNS ホスト名と DNS ドメイン名 組み合わせた名前です。DomainNameをします。

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 文字の終端 含め、必要なバッファーのサイズを受け取ります。

lpBuffer NULL場合、このパラメーターは 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);
    }
}

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー sysinfoapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

COMPUTER_NAME_FORMAT

コンピューター名の

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

システム情報関数