Freigeben über


GetComputerNameExW-Funktion (sysinfoapi.h)

Ruft einen NetBIOS- oder DNS-Namen ab, der dem lokalen Computer zugeordnet ist. Die Namen werden beim Systemstart eingerichtet, wenn das System sie aus der Registrierung liest.

Syntax

BOOL GetComputerNameExW(
  [in]      COMPUTER_NAME_FORMAT NameType,
  [out]     LPWSTR               lpBuffer,
  [in, out] LPDWORD              nSize
);

Parameter

[in] NameType

Der Typ des abzurufenden Namens. Dieser Parameter ist ein Wert aus dem COMPUTER_NAME_FORMAT Enumerationstyp. Die folgende Tabelle enthält zusätzliche Informationen.

Wert Bedeutung
ComputerNameDnsDomain-
Der Name der DNS-Domäne, die dem lokalen Computer zugewiesen ist. Wenn der lokale Computer ein Knoten in einem Cluster ist, empfängt lpBuffer den DNS-Domänennamen des virtuellen Clusterservers.
ComputerNameDnsFullyQualified
Der vollqualifizierte DNS-Name, der den lokalen Computer eindeutig identifiziert. Dieser Name ist eine Kombination aus dem DNS-Hostnamen und dem DNS-Domänennamen, wobei das Formular HostName-verwendet wird.DomainName. Wenn der lokale Computer ein Knoten in einem Cluster ist, erhält lpBuffer den vollqualifizierten DNS-Namen des virtuellen Clusterservers.
ComputerNameDnsHostname
Der DNS-Hostname des lokalen Computers. Wenn der lokale Computer ein Knoten in einem Cluster ist, empfängt lpBuffer den DNS-Hostnamen des virtuellen Clusterservers.
ComputerNameNetBIOS-
Der NetBIOS-Name des lokalen Computers. Wenn der lokale Computer ein Knoten in einem Cluster ist, erhält lpBuffer den NetBIOS-Namen des virtuellen Clusterservers.
ComputerNamePhysicalDnsDomain
Der Name der DNS-Domäne, die dem lokalen Computer zugewiesen ist. Wenn der lokale Computer ein Knoten in einem Cluster ist, erhält lpBuffer den DNS-Domänennamen des lokalen Computers und nicht den Namen des virtuellen Clusterservers.
ComputerNamePhysicalDnsFullyQualified
Der vollqualifizierte DNS-Name, der den Computer eindeutig identifiziert. Wenn der lokale Computer ein Knoten in einem Cluster ist, erhält lpBuffer den vollqualifizierten DNS-Namen des lokalen Computers und nicht den Namen des virtuellen Clusterservers.

Der vollqualifizierte DNS-Name ist eine Kombination aus dem DNS-Hostnamen und dem DNS-Domänennamen unter Verwendung des Formulars HostName.DomainName.

ComputerNamePhysicalDnsHostname
Der DNS-Hostname des lokalen Computers. Wenn der lokale Computer ein Knoten in einem Cluster ist, empfängt lpBuffer den DNS-Hostnamen des lokalen Computers und nicht den Namen des virtuellen Clusterservers.
ComputerNamePhysicalNetBIOS
Der NetBIOS-Name des lokalen Computers. Wenn der lokale Computer ein Knoten in einem Cluster ist, erhält lpBuffer den NetBIOS-Namen des lokalen Computers und nicht den Namen des virtuellen Clusterservers.

[out] lpBuffer

Ein Zeiger auf einen Puffer, der den Computernamen oder den virtuellen Clusterservernamen empfängt.

Die Länge des Namens kann größer als MAX_COMPUTERNAME_LENGTH Zeichen sein, da DNS längere Namen zulässt. Um sicherzustellen, dass dieser Puffer groß genug ist, legen Sie diesen Parameter auf NULL- fest, und verwenden Sie die erforderliche Puffergröße, die im parameter lpnSize zurückgegeben wird.

[in, out] nSize

Gibt bei eingaben die Größe des Puffers in TCHARsan. Empfängt bei der Ausgabe die Anzahl der TCHARs, die in den Zielpuffer kopiert, nicht einschließlich des endenden Null- Zeichens.

Wenn der Puffer zu klein ist, schlägt die Funktion fehl, und GetLastError- gibt ERROR_MORE_DATA zurück. Dieser Parameter empfängt die Größe des erforderlichen Puffers, einschließlich des endenden NULL- Zeichens.

Wenn lpBuffer-NULL-ist, muss dieser Parameter null sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich Null.

Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten. Mögliche Werte sind:

Rückgabecode Beschreibung
ERROR_MORE_DATA
Der lpBuffer Puffer ist zu klein. Der parameter lpnSize enthält die Anzahl der Bytes, die zum Empfangen des Namens erforderlich sind.

Bemerkungen

Wenn keine Gruppenrichtlinie für den lokalen Computer festgelegt ist, ruft die GetComputerNameEx--Funktion die netBIOS- oder DNS-Namen ab, die beim Systemstart eingerichtet wurden. Wenn Gruppenrichtlinien festgelegt sind, gibt die Funktion den primären Domänennamen zurück, der nach Gruppenrichtlinie festgelegt ist. Namensänderungen, die vom SetComputerName oder SetComputerNameEx Funktionen vorgenommen wurden, werden erst wirksam, wenn der Benutzer den Computer neu startet.

Wenn der lokale Computer nicht für die Verwendung von DNS-Namen konfiguriert ist, gibt GetComputerNameEx- keine DNS-Informationen zurück. Führen Sie zum Konfigurieren des Computers dazu die im Betriebssystem beschriebenen Schritte aus, und ändern Sie das primäre DNS-Suffix des Computers, und starten Sie den Computer neu.

Das Verhalten dieser Funktion kann beeinflusst werden, wenn der lokale Computer ein Knoten in einem Cluster ist. Weitere Informationen finden Sie unter ResUtilGetEnvironmentWithNetName und UseNetworkName.

Wenn Sie mit Umgebungen arbeiten, die unterschiedliche DNS-Layouts verwenden, bei denen der FQDN des Computers nicht mit dem FQDN seiner Domäne übereinstimmt, verwenden Sie stattdessen LsaQueryInformationPolicy.

Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie das _WIN32_WINNT Makro als 0x0500 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.

Beispiele

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

Anmerkung

Der sysinfoapi.h-Header definiert GetComputerNameEx als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- sysinfoapi.h (include Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

COMPUTER_NAME_FORMAT

Computernamen

GetComputerName-

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment-

ResUtilSetResourceServiceStartParameters

SetComputerName-

SetComputerNameEx-

Systeminformationsfunktionen