【发布时间】:2021-11-13 14:51:16
【问题描述】:
我正在创建一个程序(目标并不重要,但它恰好是纯粹为了搞砸并了解有关 Windows 的更多信息),它读取和写入另一个程序正在使用的文件(例如记事本)或单词)。
显然我在删除它时遇到了麻烦,因为我收到了拒绝访问错误,因为该文件正在使用中。
我的第一个想法是我应该使用CloseHandle (kernel32.dll) 来关闭该文件的句柄,但我不知道如何首先找到该句柄。
有什么想法吗?我在 Rust 中这样做,所以如果有任何特定于语言的建议最好,但如果没有,那也很好。
另一方面,关闭句柄后程序会发生什么? word 或记事本是否仍然可以编辑它,或者后续保存会删除我的程序所做的更改,或者它甚至不会保存?
【问题讨论】:
-
表现良好的程序等到文件被解锁后再对它做任何事情,而不是试图从另一个进程中劫持它。
-
@Kaihaku 这不应该是一个表现良好的程序,我正在尝试模拟“恶意软件”类程序的操作。
-
那么没有正确的方法可以做到这一点。杀死锁定文件的进程当然是最简单的。
-
@Kaihaku 是的,这让我想到了,但我认为这有点懒惰,我想探索一下是否可以不必终止进程:D
-
您可能会发现 Microsoft's Volume Shadow Copy Service 感兴趣。
标签: windows file rust io internals