Перечисление дескрипторов файлов в C#

Я хотел бы знать, возможно ли перечислить дескрипторы файлов в c#, возможно, с помощью Win32API. Это легко сделано для окна и дескрипторов процесса, но кажется, что это не возможно для дескрипторов файлов.

В то время как некоторая функциональность предлагается NtQuerySystemInformation, это постепенно сокращается, и поэтому не рекомендуется использовать такой метод.

7
задан steffar 9 April 2010 в 23:16
поделиться

4 ответа

Вы можете вызвать sysinternal Handle и проанализировать результат или написать драйвер файловой системы (может потребоваться несколько человеко-лет, а не может быть выполнено в C # )

0
ответ дан 7 December 2019 в 05:20
поделиться

Ну, вы знаете, что это возможно, утилита Handle от SysInternals делает это. NtQueryInformation не будет вытеснен, это важный низкоуровневый интерфейс между Win32 и "настоящей" операционной системой.

Что, однако, никогда не произойдет, так это то, что аргументы NtQueryInformation, позволяющие итерировать дескрипторы, будут документированы. Потому что это не ограничивается только этим, какой-нибудь придурок будет использовать это для вызова CloseHandle() на файле, который он/она не хочет, чтобы был заблокирован. Что является очень хорошим способом уничтожить содержимое вашего жесткого диска.

Процесс, которому принадлежал хэндл, не знает, что он закрыт. Он просто продолжит писать на него, вероятно, полностью игнорируя код возврата WriteFile() "ничего не получилось". Это безобидно до тех пор, пока программа не откроет другой хэндл, получив обратно то же значение, что и закрытый ранее. Теперь она начинает записывать в него смесь мусора (предназначенного для предыдущего хэндла) и новых данных. Полностью уничтожая содержимое того, куда он записывается. Раскрутите резервные ленты, если это что-то вроде критически важной базы данных.

7
ответ дан 7 December 2019 в 05:20
поделиться

Вот готовый класс для C # http://sourceforge.net/projects/processhacker/

1
ответ дан 7 December 2019 в 05:20
поделиться

Я нашел рабочий пример перечисления дескрипторов файлов с именами в C# здесь...

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ac990847-6d04-4ae0-aafe-8355bbc3f769

Прокрутите вниз до последней темы и перейдите по ссылке. И будьте предупреждены, когда вы скачаете код, комментарии будут на французском. Так получилось, что я изучаю французский, так что я могу понять большую часть этого.

0
ответ дан 7 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: