Windows

在應用程序執行時替換 .dll 文件?

  • December 23, 2021

我有幾個使用某個 .dll 文件執行的遊戲伺服器。有時我需要更新遊戲伺服器,但我不想中斷已經執行的遊戲。

有沒有辦法替換 .dll 文件(它已被 Windows 鎖定),以便使用該文件的遊戲伺服器的下一個實例打開新版本,而舊版本繼續使用該 .dll 的舊版本,直到它們重新啟動?

使用其中一種工具來解鎖文件並替換它是否安全?

實際上,您可以並且它通常可以正常工作(儘管並非總是如此)

您所做的是重命名文件而不移動它(即不更改文件夾結構中的文件位置)並將新文件移動到包含文件夾。

這將使文件的句柄保持有效和工作,以便預先存在的實例仍然能夠正確訪問文件,並且新實例(或新句柄)將轉到新文件。

顯然,如果一個程序重新打開同一個 dll 文件並期望它保持完全相同(例如,如果有要從 dll 載入的資源,並且對這些資源的引用是從載入 dll 時執行的程式碼中提取的),這會引起問題,但這絕對不是常態。

引用自:https://serverfault.com/questions/503721