2010-02-14 4 views
2

Windows (XP, Vista 및 7)의 파일 및 폴더에 대해 전역으로 고유 한 ID를 얻는 방법 및 파일/폴더의 전체 경로를 방금 가져올 수 있는지 궁금합니다. ID를 가지면 getFileByGUID와 같은 것입니다. C++, C# 및 PHP에서이 작업을 수행하려고합니다.Windows의 파일에 대해 전역으로 고유 한 ID

파일이 이동하더라도 전역 고유 ID는 동일하게 유지되어야하므로 파일 또는 폴더의 전체 경로 사용이 작동하지 않습니다.

도움을 주시면 감사하겠습니다.

+2

파일을 복사하면 어떻게됩니까? 두 사본 모두 동일한 ID를 사용해야합니까? 복사 된 후 원본이 삭제되면 어떻게됩니까? 그 사본은 원본 ID를 가져야 함을 의미하는 움직임으로 간주됩니까? 이것이 어떻게 작동하는지 보는 데 어려움을 겪고 있습니다. – jalf

답변

1

메타 데이터 및/또는 콘텐츠와 같은 파일 정보를 함께 해시 할 수 있습니다. 충돌없이 전체 파일 시스템에서이 작업을 수행하는 것은 어려울 수 있지만 파일 시스템 전체를 인덱싱하지 않는 것으로 가정합니다. 그래도 파일을 수정하면 ID를 유지해야하는 경우에는 작동하지 않습니다.

+0

결과 데이터베이스는 거대 할 것이고 API 오버 헤드만으로 빌드하는 데 몇 분이 걸릴 것입니다. –

2

BY_HANDLE_INFORMATION 페이지에서 언급 된주의 사항에 따라 목표가 무엇인지에 따라 GetFileInformationByHandle이 도움이 될 수 있습니다.

그러나 파일 이름을 검색 할 수는 없습니다. NTFS 하드 링크로 인해 동일한 파일 내용에 대한 경로가 두 개 이상있을 수 있습니다 ...