使用位於網路共用磁碟機上的 .Net 4.0 exe 快取副本的 Windows 用戶端

使用位於網路共用磁碟機上的 .Net 4.0 exe 快取副本的 Windows 用戶端

我們有一個 .Net 4.0 可執行檔(我的程式)以及使用 XCopy 部署在網路共用上的關聯 dll。 MyProg.exe 及其 dll 均未簽署。

我們將它們安裝在網路共用上,以便多個使用者可以使用相同版本的程式並輕鬆更新程式。多年來,這對我們的許多客戶來說效果很好。

對於最近的客戶,Windows Server 2012 虛擬機器上的資料夾被共用為網路資料夾。使用者從另一台終端伺服器(Windows Server 2012)執行該程式。

當我們更新了我的程式(從1.0到2.0版本),終端伺服器在重新啟動之前不會執行新的可執行檔。即使該 exe 不再可用,它仍會繼續載入版本 1.0。它似乎正在運行緩存版本MyProg.exe V1.0

  1. 我嘗試的步驟:
    1. 關閉程式的所有實例
    2. 複製新的我的程式到資料夾並覆蓋檔案(將exe版本從1.0更新到2.0)
    3. 驗證 2.0 版本我的程式來自檔案伺服器和終端伺服器的「屬性>>詳細資料」頁面
    4. 驗證MyProg.exe V2.0使用捷徑檔案從檔案伺服器執行時執行(目標:\\伺服器\MyProg\MyProg.exe
    5. 運行相同的快捷方式檔案(目標:\\伺服器\MyProg\MyProg.exe) 來自終端伺服器和MyProg.exe V1.0開始
    6. 改名\\伺服器\MyProg\\伺服器\我的程式1並確認終端伺服器無法運作捷徑,因為該資料夾不再存在。
    7. 建立一個新的捷徑檔案(目標:\\伺服器\MyProg1\MyProg.exe)並確認MyProg.exe V2.0在客戶端運行
    8. 重新命名資料夾\\伺服器\MyProg1回到\\伺服器\MyProg並運行原始快捷方式文件繼續加載MyProg.exe V1.0直到終端伺服器重新啟動。
    9. 我確認終端伺服器上已停用離線文件
    10. 我驗證了當程式在終端伺服器上運行時,我無法覆蓋 MyProg.exe 可執行檔。

我還可以檢查什麼來解決為什麼即使該文件不再存在,舊版本的可執行檔仍在執行?

答案1

聯繫了微軟技術支援團隊。他們提到這可能是由 SMB 的這些設定引起的。我們修改了這些設置,並將在下次更新期間保留。

http://technet.microsoft.com/en-us/library/ff686200(v=WS.10).aspx

上面連結中的設定不起作用。
幫助我們解決問題的更多詳細資訊:客戶端電腦是 Windows 終端伺服器

這篇知識庫文章提供了這方面的更多資訊:
https://support.microsoft.com/kb/2536487

如果其他使用者在 Windows Server 2008 或 Windows Server 2008 R2 中登出遠端桌面會話,應用程式可能會崩潰或變成無回應

症狀:

從映射驅動器運行應用程式時,當另一個用戶登出時,一個用戶(或多個用戶)的應用程式可能會變得無響應或崩潰。例如:

  1. 一台伺服器是檔案伺服器,另一台伺服器是遠端會話主機伺服器(終端伺服器)。
  2. 檔案伺服器上的資料夾被映射以供連接到 RDS 伺服器的遠端使用者使用。
  3. 映射共享上的應用程式由多個使用者啟動。
  4. 一名用戶登出,這會導致應用程式的其他用戶遇到應用程式崩潰或無回應的情況。

具體來說,該行為是在應用程式的第一個使用者或最後一個使用者登出時引起的,具體取決於版本。 Windows Server 2008 在第一個使用者登出時會遇到此問題;當最後一個使用者登出時,Windows Server 2008 R2 將會遇到此問題。

原因:

發生這種情況是由於重定向器處理相關二進位檔案的 FCB(檔案控制區塊)的方式所致。在 Windows Server 2008 中,FCB 歸首次開啟檔案的使用者所有,並且該 FCB 供後續使用者使用。當第一個用戶登出時,FCB 會被孤立,導致應用程式的後續用戶崩潰或變得無回應。在 Windows Server 2008 R2 中,FCB 歸最後一個開啟檔案的使用者所有,如果最後一個使用者登出,先前的使用者會遇到此問題

解決方法:

在終端伺服器上本地安裝應用程序,而不是在網路共享上

相關內容