2010-11-23 11 views
2

J'ai une situation amusante. Je suis assis sur un ordinateur sur lequel il y a un dossier partagé, disons "My_Folder". Donc, je peux y accéder en utilisant l'adresse "\ My_Box \ My_Folder". Maintenant, si j'écris un petit outil en C#, je peux convertir "\ My_Box \ My_Folder" en "C: \ My_Folder" qui est son emplacement physique.Obtenir le chemin d'accès local à partir du chemin réseau

La chose amusante est que je ne sais pas comment trouver l'emplacement physique de "My_Box \ My_Folder" sans mon programme ... Et c'est en fait un problème de mon ami. Donc, si quelqu'un sait comment trouver le chemin local à partir d'un chemin réseau avec quelques commandes/opérations Windows simples (Winxp, 2000, Vista, 7, ...), faites le moi savoir.

Merci, Pete.

Répondre

2

Si tout ce dont vous avez besoin est un outil de ligne de commande qui fournira cette information, vous pouvez simplement utiliser la commande net share intégrée à Windows.

Si vous avez besoin de le faire par programme, vous pouvez utiliser la fonction NetShareGetInfo. L'exemple suivant montre comment l'utiliser pour interroger le chemin \\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'envelopper le tampon dans une classe et appeler NetApiBufferFree de son destructor mais c'est à vous.

Questions connexes