Pregunta

En una aplicación C++ Windows (XP y NT, si hay alguna diferencia) en la que estoy trabajando, necesito obtener el nombre de la red asociada con la computadora en la que se ejecuta el código, para poder convertir nombres de archivos locales desde C:\ nombredearchivo.ext a \ ombre_de_red\C$ ombredearchivo.ext.¿Cómo haría esto?

Alternativamente, si hay una función que simplemente haga la conversión que describí, sería aún mejor.Miré WNetGetUniversalName, pero no parece funcionar con archivos locales (unidad C).

¿Fue útil?

Solución

Otros consejos

Hay más de una alternativa:

a.Utilice GetComputerName() de Win32 como lo sugiere Stu.
Ejemplo: http://www.techbytes.ca/techbyte97.html
O
b.Utilice la función gethostname() en Winsock.Esta función es multiplataforma y puede ayudar si su aplicación se va a ejecutar en otras plataformas además de Windows.
Referencia de MSDN: http://msdn.microsoft.com/en-us/library/ms738527(VS.85).aspx
O
C.Utilice la función getaddrinfo().
Referencia de MSDN: http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx

Estoy de acuerdo con Pascal en el uso de la función gethostname() de winsock.Aquí tienes:

#include <winsock2.h> //of course this is the way to go on windows only

#pragma comment(lib, "Ws2_32.lib")

void GetHostName(std::string& host_name)
{
    WSAData wsa_data;
    int ret_code;

    char buf[MAX_PATH];

    WSAStartup(MAKEWORD(1, 1), &wsa_data);
    ret_code = gethostname(buf, MAX_PATH);

    if (ret_code == SOCKET_ERROR)
        host_name = "unknown";
    else
        host_name = buf;


    WSACleanup();

}

Si desea solo el nombre de la computadora local (NetBIOS), use GetComputerName función.Recupera solo el nombre de la computadora local que se establece al iniciar el sistema, cuando el sistema lo lee del registro.

BOOL WINAPI GetComputerName(
  _Out_   LPTSTR  lpBuffer,
 _Inout_ LPDWORD lpnSize
);

Más sobre Obtener nombre de computadora

Si desea obtener el nombre de host DNS, el nombre de dominio DNS o el nombre DNS completo, llame al GetComputerNameEx función.

BOOL WINAPI GetComputerNameEx(
  _In_    COMPUTER_NAME_FORMAT NameType,
  _Out_   LPTSTR               lpBuffer,
  _Inout_ LPDWORD              lpnSize
);

Más sobre Obtener nombre de computadora Ex

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top