是否可以创建一个应用程序来检查Windows上的每个打开的文件?

时间:2011-12-10 12:47:08

标签: c# c windows logging kernel

我想构建一个应用程序(如果还没有)在C#上记录每个Windows(7,64位)打开的文件(包括属性)。

你怎么看?有可能吗?是否还有其他软件可以做到这一点?我是否需要使用低级语言(C?)并管理内核事件?

1 个答案:

答案 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以查看其他可用的属性。