Как я получаю список открытых дескрипторов файлов процессом в C#?

Надеемся на эту помощь

set a=%username%
echo %a%    
set a="hello"
echo %a%
40
задан Sam Saffron 23 August 2009 в 13:38
поделиться

4 ответа

Ай это будет твердым сделать от управляемого кода.

существует образец на codeproject

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

23
ответ дан Uwe Keim 27 November 2019 в 01:47
поделиться

Можно также запустить приложение командной строки, Дескриптор , Mark Rusinovich, и проанализировать вывод.

12
ответ дан Mark Cidade 27 November 2019 в 01:47
поделиться

Вы можете P/INVOKE в NtQuerySystemInformation функция, чтобы запросить для всех дескрипторов и затем пойти оттуда. Этот обсуждение групп Google имеет детали.

10
ответ дан Mark Cidade 27 November 2019 в 01:47
поделиться

Handle - отличная программа, и ссылка на codeproject хорошая.

@Brian Причина появления кода в том, что handle.exe НЕ распространяется. Они также не раскрывают свой источник.

Похоже, что .Net будет нелегко сделать это, поскольку для доступа к информации требуется встроенное устройство. Это невозможно сделать в .net без неподключенной библиотеки DLL. Это относительно глубокий код ядра по сравнению с типичным кодированием .net. Я удивлен, что WMI этого не раскрывает.

2
ответ дан 27 November 2019 в 01:47
поделиться