如何通过C#中的进程ID获取打开文件句柄列表?
我有兴趣挖掘并获取文件名.
寻找程序化等价的进程资源管理器.
这很可能需要互操作.
考虑到在此上添加赏金,实现是非常复杂的.
Sam*_*ron 23
哎呀,托管代码很难做到这一点.
大部分内容都可以在interop中完成,但是你需要一个驱动程序来获取文件名,因为它存在于内核的地址空间中.Process Explorer将驱动程序嵌入其资源中.从C#中获取这一切,并支持64位和32位,这将是一个令人头疼的问题.
看看这个文件:http: //vmccontroller.codeplex.com/SourceControl/changeset/view/47386#195318
并使用:
DetectOpenFiles.GetOpenFilesEnumerator(processID);
Run Code Online (Sandbox Code Playgroud)
演示:
using System;
using System.Diagnostics;
namespace OpenFiles
{
class Program
{
static void Main(string[] args)
{
using (var openFiles = VmcController.Services.DetectOpenFiles.GetOpenFilesEnumerator(Process.GetCurrentProcess().Id))
{
while (openFiles.MoveNext())
{
Console.WriteLine(openFiles.Current);
}
}
Console.WriteLine();
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它依赖于汇编 System.EnterpriseServices
| 归档时间: |
|
| 查看次数: |
50337 次 |
| 最近记录: |