父子进程和dll共享。它是如何工作的?

时间:2015-03-26 10:09:12

标签: c++ winapi dll

我正在撰写需要在某个时候更新的应用程序。为此,我使用另一个将文件下载到应用程序文件夹的进程。但有时 某些文件(dll)无法覆盖。我认为这是因为他们很忙。

更详细:
主要应用 A 使用lsome dll。更新程序 B 使用所有相同的dll(实际上不同,但在不同的文件夹中复制它们)。 A 在单独的工作目录中将 B 作为分离进程启动。使用 ProcessExplorer ProcessHacker ,我可以看到 A B 的所有dll来自不同的路径 - 那里&#39 ;任何dll都没有共同的路径。接下来我关闭 A 。我在 B 中有WaitForSingleObjectEx,我甚至添加了超时,因此我100%确定已退出 A 。我将文件下载到 A 的文件夹(下载的文件 - A 使用的dll)。并且 CAN 会发生某些的dll无法被覆盖。每次发布都有不同的dll甚至更糟 - 一些发布工作正常!另一个奇怪的事情是我 CAN 在资源管理器中手动删除所有文件。

A B 是否有可能在内存中使用相同的dll(认为他们不应该 - 每个应用都拥有它自己的副本)?应用程序退出后是否有可能没有卸载某些dll?为什么手动删除有效?我还能做些什么来找到理由(我尝试了 ProcessExplorer ProcessHacker - 两个程序都没有显示任何罪犯)?

0 个答案:

没有答案