【问题标题】:Is there a way to write to a file while it is being used by another process (a process in ring 0?)有没有办法在另一个进程(环 0 中的进程)使用文件时写入文件?
【发布时间】:2023-08-05 12:38:02
【问题描述】:

最近,我一直在尝试写入一个 .PAK 文件,而该文件正被 ring 0 中的另一个进程使用。这一直是一个问题,我没有取得太大的成功。我可以使用任何必要的编程语言来完成此任务,但首选 C#/VB.net。我原本想在编辑时使用查找和替换系统,但我只会选择和偏移写入等等。

不,我不能只是终止进程然后编辑;该进程必须正在运行。是的,我显然知道附加文件句柄的过程。

不,我不能只以管理员身份运行,因为该进程是在 ring 0/内核中建立的。

我尝试了多种方法,包括将进程速度临时设置为 0 以编辑然后还原,以及更改 FileShare 和其他参数,但均未成功。

我听说过很多但我没有经验的一种方法是创建“内核驱动程序”。我不知道该怎么做,我在网上找不到太多信息,所以如果你认为这是最好的方法,请告诉我如何开始。任何帮助表示赞赏!

【问题讨论】:

    标签: vb.net kernel streamwriter file-access


    【解决方案1】:

    始终创建一个临时文件(原始文件的副本)。如果您需要处理代码中的文件,请创建一个临时文件,使用临时文件并处理该文件。所以如果你需要另一个进程,那是没有问题的。

    【讨论】:

    • 在我的情况下,该进程建立了一个文件句柄,并且正在直接读取/写入文件,所以如果我只是创建一个副本,它不会有任何区别。您还有其他想法吗?