2010-02-18 65 views
0

Windows中获取文件位置的最简单方法是什么?获取文件的位置:网络或本地

我有一个由Windows函数GetModuleName(返回模块的全名(exe或dll))返回给我的文件名,它可以是任何有效的文件名格式,例如,

  • myfile.dll
  • C:\ WINDOWS \ myfile.dll
  • \ \ C:\ WINDOWS \ myfile.dll(或类似这样的东西)
  • X:\ BIN \ MYFILE。 dll的
  • \ MYSERVER \ myshare的\ myfile.dll

什么是知道的路径是否指的是本地驱动器或网络驱动器的最简单的方法?

回答

1

GetFullPathName()将帮助标准化路径名称。虽然我不认为你需要它。你想要通过手柄。所以请致电CreateFile(),得到句柄,然后打电话给GetFinalPathNameByHandle(VOLUME_NAME_GUID)这适用于网络驱动器没有卷GUID。

0

此代码可能对您有所帮助,它确定文件夹是否位于网络共享位置。

#include <windows.h> 
#include <stdio.h> 
#include <lm.h> 

int main() 
{ 
    PSHARE_INFO_502 BufPtr, p; 
    NET_API_STATUS res; 
    LPTSTR lpszServer = NULL; 
    DWORD er = 0,tr = 0,resume = 0, i; 

    do 
    { 
     res = NetShareEnum(lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume); 

     if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA) 
     { 
     p = BufPtr; 

     for(i = 1; i <= er; i++) 
     { 
      printf("%S\t\t%S\n", p->shi502_netname, p->shi502_path); 
      p++; 
     } 

     NetApiBufferFree(BufPtr); 
     } 
     else 
     printf("Error: %ld\n", res); 
    } 
    while(res == ERROR_MORE_DATA); 

    system("pause"); 
    return 0; 
}