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

标签 c# c windows logging kernel

<分区>

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

你怎么看?这可能吗?是否已经构建了另一个软件来执行此操作?我是否需要使用低级语言(C?)并管理内核事件?

最佳答案

I mean, if I open this c:/programs/file.exe /my-attributes how can I catch /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查看还有哪些其他属性可用。

关于c# - 是否可以创建一个应用程序来检查 Windows 上每个打开的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456597/

相关文章:

c# - 需要一个字符串 JSON Validator

c - 按名称初始化结构的数组成员

将字符与C中的多个字符进行比较

c - 我如何理解以下内容的含义?

windows - 为什么 Windows.dcu 被标记为病毒?德尔福

windows - 聚焦一个批量启动的应用程序

python - 在辅助驱动器上安装 Anaconda (Windows)

c# - 谷歌驱动器 API : I have to fetch only files in that folder without trashed files

javascript - 根级别的数据在 $.ajax 调用中无效

c# - NopCommerce Nop.Core 冲突 DLL 问题