代码之家  ›  专栏  ›  技术社区  ›  user2694310

为什么不能在Windows上删除运行的exe和加载的dll?

  •  -1
  • user2694310  · 技术社区  · 9 年前

    我是说,这有什么意义?无论如何,它们都在系统内存中。 我找不到任何“官方”文档来解释为什么Windows保护加载的对象(exe、dll甚至ocx)。

    我猜:

    • 针对安全问题或人为错误的预期措施
    • 文件系统限制

    除非在Unix上锁定,否则我们可以轻松删除任何文件。在我看来,这只会妨碍ux。如果需要证据,请勾选“如何删除dll”。很多人都遭受了痛苦,我也是其中之一。

    微软提到过这件事吗? 有什么方法可以禁用此“保护”吗?(可能不会,也永远不会,因为Windows!)

    1 回复  |  直到 9 年前
        1
  •  3
  •   Joe White    9 年前

    无论如何,它们都在系统内存中。

    不,他们不是。当系统认为某个页面已经闲置了一段时间,而RAM可以更好地用于另一个进程(或此进程中的另一个页面)时,将按需加载各个页面,并从RAM中丢弃。

    这意味着,有效地说,只要进程运行,EXE文件就会一直打开,并且DLL文件会一直打开,直到/除非进程卸载DLL,在这两种情况下,都可以根据需要加载/重新加载页面。