Intereting Posts
Альтернатива HttpUtility.ParseQueryString без зависимости System.Web? Есть ли способ перебора всех значений enums? Добавление преобразования C # XSLT & # xA; и & # xD; к выходу Передача classа Derived в качестве параметра для метода, когда тип параметра является базовым classом как добавить текст в изображение в c # или vb.net Подождите внутри метода, пока событие не будет захвачено Как я могу собрать событие CollectionChanged в ObservableCollection и передать ему измененные элементы? Отправьте электронное письмо с файлом HTML как body (C #) Как угадать кодировку файла без спецификации в .NET? Использование Func в запросе LINQ Named Pipe Server выдает UnauthorizedAccessException при создании экземпляра seccond, если PipeSecurity установлен ОТДЫХ от asp.net 2.0 Преобразование значения строки в десятичную с правильными десятичными точками Как пропустить итерацию цикла foreach? Лучшая практика для параметра: IEnumerable vs. IList vs. IReadOnlyCollection

Как вы читаете 128-битный NTFS FILE_ID для каталога и / или файла?

Поэтому NTFS использует 128-битный Guid для идентификации файлов и каталогов, вы можете легко просмотреть эту информацию:

 C: \ Temp> C: \ Windows \ System32 \ fsutil.exe объект-запрос.  Идентификатор объекта: ab3ffba83c67df118130e0cb4e9d4076 Дата рождения: ca38ec6abfe0ca4baa9b54a543fdd84f Дата рождения: 

Так что это достаточно очевидно, но как получить эту информацию программно? Если посмотреть на WinApi для OpenFileById (…), вы сможете получить эту информацию. Можно было бы ожидать, что это будет сделано в « Библиотеке API Win32 FileID », но метод там ( GetFileInformationByHandleEx ) возвращает структуру FILE_ID_BOTH_DIR_INFO . Эта структура определяет FileId; однако это LARGE_INTEGER (64 бит), а не полный 128-разрядный идентификатор.

Я предполагаю, что можно использовать WMI для этого, это то, куда я должен обратиться?

Немного искал меня в DeviceIoControl и есть ответ на ваш вопрос: FSCTL_GET_OBJECT_ID возвращает точно те же идентификаторы, что и в вашем выходе из fsutil .

Во всяком случае, документы для BY_HANDLE_FILE_INFORMATION говорят, что 64-битный идентификатор файла уже однозначно идентифицирует файл на данном томе. Согласно Wikipedia , NTFS поддерживает только максимум 2 ^ 32 файла, поэтому 128-битный ID кажется совершенно ненужным.

Также, пожалуйста, не то, что НЕ каждый файл имеет GUID. Th GUID mechanisim в основном используется для файлов .lnk, чтобы сохранить связь при перемещении трассировки. Только $ Volume и целевые файлы ссылок имеют эти GUID. Кроме того, вы можете установить их вручную.

Их преимуществом является то, что GUID не должен сталкиваться между томами, в то время как идентификатор файла. FILE_ID на самом деле 48 бит MFT_RECORD_NUMBER и 16 бит MFT_SEQUENCE_ID