C#在写入/修改文件时分析文件的解决方案

C#在写入/修改文件时分析文件的解决方案,c#,.net,file,metadata,file-processing,C#,.net,File,Metadata,File Processing,我有几个项目需要我监视文件,然后在文件写入磁盘时对其进行编辑。我有一种感觉,我正在寻找的是如何操作相同的反病毒工具运作。让我提供更多细节: 1) 我需要捕获Office应用程序保存的所有文件,然后在每个文档的页眉/页脚写入磁盘时将特定的公司标记添加到它们。 2) 我需要立即知道一个可编辑文件(几乎任何类型)何时写入磁盘,以便我可以执行一些扫描操作,检查文件内容是否符合某些公司政策 简而言之,您可以看到,我需要在将任何用户文件写入磁盘时处理它们 这是我的问题。我想使用C#完成这项任务,但我不确定它

我有几个项目需要我监视文件,然后在文件写入磁盘时对其进行编辑。我有一种感觉,我正在寻找的是如何操作相同的反病毒工具运作。让我提供更多细节: 1) 我需要捕获Office应用程序保存的所有文件,然后在每个文档的页眉/页脚写入磁盘时将特定的公司标记添加到它们。 2) 我需要立即知道一个可编辑文件(几乎任何类型)何时写入磁盘,以便我可以执行一些扫描操作,检查文件内容是否符合某些公司政策

简而言之,您可以看到,我需要在将任何用户文件写入磁盘时处理它们


这是我的问题。我想使用C#完成这项任务,但我不确定它是否能够满足我的要求。我在网上看到的一切都是面向较低级别的C编程的,由于这个项目的时间限制,我特别希望避免这种情况。有人知道如何用C轻松完成这项任务吗?它是否可行(即语言级别太高、速度太慢等)?

您看过FileSystemWatcher吗?

您看过FileSystemWatcher吗?

C可以轻松做到这一点。查看
FileSystemWatcher
class()。

C#可以很容易地做到这一点。请看
FileSystemWatcher
class()。

性能不是问题。我想我会质疑整个过程——这听起来像是一场灾难。使用FileSystemWatcher,您可以在几分钟内轻松地在C#中将一些内容整合到一起,但这将充满问题。AV软件在锁定文件和搞乱各种软件方面已经够糟糕的了,而且它甚至没有试图修改文件。您如何知道其他应用程序何时“完成”写入文件?当文件被锁定,而其他文件因无法访问而中断时,您该怎么办?

性能不是问题。我想我会质疑整个过程——这听起来像是一场灾难。使用FileSystemWatcher,您可以在几分钟内轻松地在C#中将一些内容整合到一起,但这将充满问题。AV软件在锁定文件和搞乱各种软件方面已经够糟糕的了,而且它甚至没有试图修改文件。您如何知道其他应用程序何时“完成”写入文件?当文件被锁定,而由于无法访问而导致其他内容中断时,您会怎么做?

是否可以将元数据放入Normal.Dot,然后强制所有人使用该版本的Normal.Dot?是否可以将元数据放入Normal.Dot,只要强迫每个人使用普通.Dot?FileSystemWatcher版本,文件修改时就会告诉你,但你必须在你想查看的每个文件夹上设置一个。这很可能适用于任何解决方案。在任何情况下,没有任何东西(除了性能影响)会阻止您对整个驱动器进行递归监视。FileSystemWatcher会在文件被修改时告诉您,但您必须在每个要监视的文件夹上设置一个。这很可能适用于任何解决方案。在任何情况下,没有任何东西(除了性能影响)阻止您对整个驱动器进行递归监视。我在某个地方读到,由于缓冲区限制,这只能监视目录中的80个文件。对我来说,这并不能真正扩大规模。AV解决方案如何做到这一点?它们是否会替换较低级别的DLL以参与单个文件事务?不太可能-FSW的麻烦在于目录中的许多文件同时发生更改-它可能会丢失更改。AV在内存中使用存储筛选器驱动程序和垫片修补I/O库(取决于供应商)。您不能(合法地)在托管代码中这样做。我以前做过,但这真的是个坏主意,你必须是巫师先生才能让它继续运行。说真的,我会重新考虑整个方法(将事件另存为office插件或其他东西)。对真正的用户来说,事后再做将是一场噩梦。修补Office doc道具需要以独占方式访问该文件。您提出了一些好的观点。。。想法的变化:*监视文件的创建或修改*分析文件的内容--Office就是一个例子,但我们需要监视几乎所有的文件类型*如果存在某些内容,则发出警报,或者可能只是阻止更改。我必须请求更多的帮助1) 是否有任何文件类型的内容扫描库?我想使用正则表达式查询来查找文档或HTML文件中的敏感文本2)是否有一种方法可以基于FileSystemWatcher输出“撤消”文件操作。如果违反了文件内容策略,我可以撤消文件副本吗?对于内容挖掘,您可以使用注册的iFilter(这是索引/搜索使用的)。“警惕y”是合理的。您可能会使用卷影副本的保存版本来“撤消”保存,但这听起来也是一种垃圾处理用户数据的好方法……我在某个地方读到,由于缓冲区限制,这只能监视目录中的80个文件。对我来说,这并不能真正扩大规模。AV解决方案如何做到这一点?它们是否会替换较低级别的DLL以参与单个文件事务?不太可能-FSW的麻烦在于目录中的许多文件同时发生更改-它可能会丢失更改。AV在内存中使用存储筛选器驱动程序和垫片修补I/O库(取决于供应商)。您不能(合法地)在托管代码中这样做。我以前做过,但这真的是个坏主意,你必须是巫师先生才能让它继续运行。说真的,我会重新考虑整个方法(将事件另存为office插件或其他东西)。对真正的用户来说,事后再做将是一场噩梦。修补Office doc道具需要以独占方式访问该文件。您提出了一些好的观点。。。对