是这样的,我会在 A 目录保存一个 EXE 程序并一直运行它,作为一个 WEB 服务 但有时我可能会修改重新编译,编译成功后我想用脚本复制到 A 目录覆盖那个 EXE 程序 但因为 EXE 在运行,无法覆盖,会提示:"另一个程序正在使用此文件,进程无法访问"
我想删除这个 EXE 再复制,也不行:"拒绝访问"
我记得 LINUX 是可以删除运行中的程序,然后再复制的,WINDOWS 是不是没有这样的功能?
1
codehz 2022-12-17 10:08:57 +08:00 via iPhone 1
可以删除,先打开文件的 handle ,然后把这个 handle 放到 NtDeleteFile 的 ObjectAttributes.RootDirectory 里
或者使用 posix 删除语义 FILE_DISPOSITION_POSIX_SEMANTICS 我记得也可以? (不过实际上是移动到 c:\\$extend\$deleted\fileid 里,某些进程管理器能看到 如果要真正删除的话,得预先准备一下,把 exe 写入到文件额外数据流里,运行起来后,再把源文件用上述方法删除,这样就找不到任何痕迹了 |
2
NewYear 2022-12-17 10:34:20 +08:00 1
Windows 可以重命名,再复制或者移动一个文件过来
|
3
zyxk 2022-12-17 10:40:18 +08:00 1
直接重命名原文件后, 在写入原文件名的文件, 应该是最简单的了吧
|