Question

J'ai une drôle de situation. Je suis assis sur un ordinateur sur lequel il y a un dossier partagé, par exemple, « my_folder ». Donc, je peux accéder à l'aide de l'adresse "\ My_Box \ my_folder".

Maintenant, si j'écris un petit outil en C #, je peux convertir le « \ My_Box \ my_folder » à « C: \ my_folder » qui est son emplacement physique.

La chose drôle est que je ne sais pas comment trouver l'emplacement physique de « My_Box \ my_folder » sans mon programme ... Et il est en fait l'un des problème de mon ami.

Donc, si quelqu'un sait comment trouver le chemin d'accès local à partir d'un chemin réseau avec quelques simples commandes de base de Windows / opérations (soit Winxp, 2000, Vista, 7, ...), s'il vous plaît laissez-moi savoir.

Merci, Pete.

Était-ce utile?

La solution

Si vous avez besoin est un outil de ligne de commande qui fournira ces informations, vous pouvez simplement utiliser la commande net share qui est intégré dans Windows.

Si vous avez besoin de le faire, vous pouvez utiliser la fonction programmation de NetShareGetInfo. L'exemple suivant montre comment l'utiliser pour interroger le chemin pour \\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);
    }
}

J'envelopperait le tampon dans une NetApiBufferFree de classe et de son appel destructor mais c'est à vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top