Condividi tramite


Funzione GetComputerNameExA (sysinfoapi.h)

Recupera un nome NetBIOS o DNS associato al computer locale. I nomi vengono stabiliti all'avvio del sistema, quando il sistema li legge dal Registro di sistema.

Sintassi

BOOL GetComputerNameExA(
  [in]      COMPUTER_NAME_FORMAT NameType,
  [out]     LPSTR                lpBuffer,
  [in, out] LPDWORD              nSize
);

Parametri

[in] NameType

Tipo di nome da recuperare. Questo parametro è un valore del tipo di enumerazione COMPUTER_NAME_FORMAT. Nella tabella seguente vengono fornite informazioni aggiuntive.

Valore Significato
ComputerNameDnsDomain
Nome del dominio DNS assegnato al computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome di dominio DNS del server virtuale del cluster.
ComputerNameDnsFullyQualified
Nome DNS completo che identifica in modo univoco il computer locale. Questo nome è una combinazione del nome host DNS e del nome di dominio DNS, usando il formato HostName.DomainName. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome DNS completo del server virtuale del cluster.
ComputerNameDnsHostname
Nome host DNS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome host DNS del server virtuale del cluster.
ComputerNameNetBIOS
Nome NetBIOS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome NetBIOS del server virtuale del cluster.
ComputerNamePhysicalDnsDomain
Nome del dominio DNS assegnato al computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome di dominio DNS del computer locale, non il nome del server virtuale del cluster.
ComputerNamePhysicalDnsFullyQualified
Nome DNS completo che identifica in modo univoco il computer. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome DNS completo del computer locale, non il nome del server virtuale del cluster.

Il nome DNS completo è una combinazione del nome host DNS e del nome di dominio DNS, usando il formato HostName.DomainName.

ComputerNamePhysicalDnsHostname
Nome host DNS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome host DNS del computer locale, non il nome del server virtuale del cluster.
ComputerNamePhysicalNetBIOS
Nome NetBIOS del computer locale. Se il computer locale è un nodo in un cluster, lpBuffer riceve il nome NetBIOS del computer locale, non il nome del server virtuale del cluster.

[out] lpBuffer

Puntatore a un buffer che riceve il nome del computer o il nome del server virtuale del cluster.

La lunghezza del nome può essere maggiore di MAX_COMPUTERNAME_LENGTH caratteri perché DNS consente nomi più lunghi. Per assicurarsi che questo buffer sia sufficientemente grande, impostare questo parametro su NULL e usare le dimensioni del buffer necessarie restituite nel parametro lpnSize.

[in, out] nSize

In input, specifica le dimensioni del buffer, in TCHAR. Nell'output, riceve il numero di TCHAR copiati nel buffer di destinazione, senza includere il carattere di terminazione null.

Se il buffer è troppo piccolo, la funzione ha esito negativo e GetLastError restituisce ERROR_MORE_DATA. Questo parametro riceve le dimensioni del buffer richiesto, incluso il carattere di terminazione null.

Se lpBuffer è null, questo parametro deve essere zero.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError. I valori possibili includono quanto segue.

Codice restituito Descrizione
ERROR_MORE_DATA
Il buffer lpBuffer è troppo piccolo. Il parametro lpnSize contiene il numero di byte necessari per ricevere il nome.

Osservazioni

Se i criteri di gruppo non sono impostati per il computer locale, la funzione GetComputerNameEx recupera i nomi NetBIOS o DNS stabiliti all'avvio del sistema. Se i criteri di gruppo sono impostati, la funzione restituisce il nome di dominio primario impostato da Criteri di gruppo. Le modifiche apportate dal SetComputerName o funzioni SetComputerNameEx non diventano effettive finché l'utente non riavvia il computer.

Se il computer locale non è configurato per l'uso dei nomi DNS, GetComputerNameEx non restituirà informazioni DNS. Per configurare il computer per eseguire questa operazione, seguire i passaggi descritti nella Guida del sistema operativo e modificare il suffisso DNS primario del computer, quindi riavviare il computer.

Il comportamento di questa funzione può essere influenzato se il computer locale è un nodo in un cluster. Per altre informazioni, vedere ResUtilGetEnvironmentWithNetName e UseNetworkName.

Se si usano ambienti che usano layout DNS diversi, in cui l'FQDN del computer non corrisponde al nome di dominio completo del dominio, usare LsaQueryInformationPolicy.

Per compilare un'applicazione che usa questa funzione, definire la macro _WIN32_WINNT come 0x0500 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Esempi

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

Nota

L'intestazione sysinfoapi.h definisce GetComputerNameEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione sysinfoapi.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

COMPUTER_NAME_FORMAT

nomi computer

GetComputerName

ResUtilGetEnvironmentWithNetName

ResUtilSetResourceServiceEnvironment

ResUtilSetResourceServiceStartParameters

SetComputerName

SetComputerNameEx

funzioni di informazioni di sistema