Pregunta

Tengo una situación divertida. Estoy sentado en un equipo en el que hay una carpeta compartida, por ejemplo, "My_Folder". Por lo tanto, puedo acceder a ella mediante la dirección "\ My_Box \ My_Folder".

Ahora, si escribo una pequeña herramienta en C #, puedo convertir el "\ My_Box \ My_Folder" a "C: \ My_Folder", que es su ubicación física.

Lo curioso es que no sé cómo encontrar la ubicación física de "My_Box \ My_Folder" sin mi programa ... Y es en realidad uno de problema de mi amigo.

Así que si alguien sabe cómo encontrar la ruta local de una ruta de red con algunos simples comandos básicos de Windows / operaciones (ya sea WinXP, 2000, Vista, 7, ...), por favor hágamelo saber.

Gracias, Pete.

¿Fue útil?

Solución

Si todo lo que necesita es una herramienta de línea de comandos que proporcionará esta información, entonces puede simplemente usar el comando net share que está integrado en Windows.

Si tiene que hacerlo mediante programación que puede utilizar la función NetShareGetInfo. El siguiente ejemplo muestra cómo utilizarlo para consultar la ruta de acceso para \\localhost\share en C ++.

#include <windows.h>
#include <lm.h>
#pragma comment (lib, "netapi32.lib")

#include <iostream>
using namespace std;

int main()
{
    BYTE * buffer = nullptr;

    auto error = NetShareGetInfo(nullptr, // local computer
                                 L"share",
                                 2, // level
                                 &buffer);

    if (ERROR_SUCCESS == error)
    {
        auto info = reinterpret_cast<SHARE_INFO_2 *>(buffer);

        wcout << info->shi2_path << endl;
    }

    if (buffer)
    {
        NetApiBufferFree(buffer);
    }
}

Me envolver el búfer en una clase y NetApiBufferFree llamada desde su destructor, sino que depende de usted.

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