C# 替换服务器中正在客户端PC中打开的.net应用程序

C# 替换服务器中正在客户端PC中打开的.net应用程序,c#,.net,vb.net,windows,windows-8,C#,.net,Vb.net,Windows,Windows 8,我们公司内部使用了一些Vb.Net应用程序。这些将托管在我们的windows server 2012中,并将从网络中的所有客户端计算机(windows xp、7和8)进行访问。当我们构建新版本的应用程序时,我们将通过将旧的exe文件重命名为Application1_old.exe来替换服务器中现有的exe文件,并将新文件命名为Application1.exe。通常,它允许重命名文件,即使应用程序在客户端PC中打开。一旦用户关闭并重新打开应用程序,他将获得新功能。因此,当.exe在客户端中打开时,

我们公司内部使用了一些Vb.Net应用程序。这些将托管在我们的windows server 2012中,并将从网络中的所有客户端计算机(windows xp、7和8)进行访问。当我们构建新版本的应用程序时,我们将通过将旧的exe文件重命名为Application1_old.exe来替换服务器中现有的exe文件,并将新文件命名为Application1.exe。通常,它允许重命名文件,即使应用程序在客户端PC中打开。一旦用户关闭并重新打开应用程序,他将获得新功能。因此,当.exe在客户端中打开时,我们将在何处替换它们

因此,Windows server将允许重命名从网络或本地打开的vb.net exe/dll文件。此功能仅在Windows server中找到

问题案例: 但有时这将不允许重命名某些文件。但是,如果我们有时对同一个文件进行尝试,它将允许。此错误不是特定于文件的,也不是常规错误。当出现此错误时,我们必须在OpenFiles中关闭应用程序的现有连接,然后进行重命名

我不知道这个问题何时会出现,何时不会出现。根据我之前的观察,我发现若任何一台windows7电脑上有任何exe文件打开,那个么它就不允许在服务器上重命名。所以我们只关闭了那台电脑的开放连接。它允许以后重命名

稍后,我们将一些PC升级到windows 8。升级后,此问题案例的数量增加。我觉得它只与windows7或Windows8有关,但不确定。某些功能可能在win XP中默认启用,但在Windows 7及更高版本中可能被禁用。 我还得到了一些信息,比如“当客户端锁定了文件句柄时,我们不能重命名文件”。但正如我之前所说,我们能够在过去几年中做到这一点。那么这怎么可能呢?
有人面临同样的问题吗?如何解决此问题?现在无法替换文件的原因可能是什么

当可执行文件在客户机上运行时,您可以对其进行重命名,这并不奇怪。这不是部署应用程序的推荐方法

你应该调查一下。这允许您部署到web服务器或文件共享。客户端然后在本地安装应用程序,这样无论是否有人使用您的应用程序,您都可以执行更新

之前提出的问题与您的问题类似:


作为最后的尝试,您可能还希望“为个人和管理员提供“动态”替换操作系统当前正在使用的文件的功能”

InUse.exe将仅在电脑重新启动后替换该文件,因为它使用“PendingFileRenameOperations”。如果我禁用“机会主义锁定”怎么办?