我想构建一个应用程序(如果还没有)在C#上记录每个Windows(7,64位)打开的文件(包括属性)。
你怎么看?有可能吗?是否还有其他软件可以做到这一点?我是否需要使用低级语言(C?)并管理内核事件?答案 0 :(得分:3)
我的意思是,如果我打开这个c:/programs/file.exe / my-attributes我怎样才能捕获/ my-attributes
您真正需要的是用于启动进程的命令行。尝试发现进程打开的文件是一个完全不同的问题。你可以用C#实际使用System.Management在Win32_Process类上运行查询。启动一个新的控制台模式项目并添加对System.Management的引用。使代码看起来像这样:
using System;
using System.Management; // NOTE: add a reference to System.Management!
class Program {
static void Main(string[] args) {
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Process");
foreach (ManagementObject queryObj in searcher.Get()) {
Console.WriteLine(queryObj["CommandLine"]);
}
Console.ReadLine();
}
}
请注意输出不是很干净,需要解析。某些进程可能会显示其内部Windows路径(如\??\etc
),某些进程没有完整路径名。查看Win32_Process class documentation以查看其他可用的属性。