<分区>
我想构建一个应用程序(如果还没有的话)来记录每个 Windows(7、64 位)在 C# 上打开的文件(包括属性)。
你怎么看?这可能吗?是否已经构建了另一个软件来执行此操作?我是否需要使用低级语言(C?)并管理内核事件?
<分区>
我想构建一个应用程序(如果还没有的话)来记录每个 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/