2010-02-18 7 views
0

파일 위치를 얻는 가장 쉬운 방법은 무엇입니까?파일 위치 찾기 : 네트워크 또는 로컬

나는 Windows 함수 GetModuleName (모듈 (exe 또는 dll)의 전체 이름을 반환 함)을 통해 나에게 반환 된 파일 이름을 가지고 있으며 유효한 파일 이름 형식으로되어있을 수 있습니다.

  • 의 MyFile.dll
  • C : \ WINDOWS \의 MyFile.dll
  • \ \ C : \ WINDOWS \의 MyFile.dll (또는 뭔가 같은)
  • X : \ 빈 \의 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; 
}