为什么有时 exe 文件会被 Windows 锁定?

为什么有时 exe 文件会被 Windows 锁定?

我们有一个内部应用程序 Fattracs,Citrix 上有 10-30 个用户在使用。所有用户都启动了自己的实例。exe 文件驻留在多台装有 Windows 2003 R2 的服务器上,这些服务器由 Citrix 进行负载平衡。新版本发布时,必须更改 exe 文件。如果用户数量很少,则通常可以动态更改 exe 文件。新用户随后会获得新版本,而现有用户必须重新启动才能获得它。但是对于许多用户,Windows 可能会以某种方式锁定 exe 文件。然后我们必须在更改之前踢出所有用户。

有人知道原因,甚至知道如何解决吗?我们对 exe 目录有一些文件共享,因为我们不想一直使用远程桌面来访问它。这有什么意义吗?

答案1

在托管共享文件的服务器上使用命令“net file”查看哪些用户打开了该文件。

在同一个框中使用命令“net file /close”强制关闭第一个命令返回的任何会话。

然后您将能够更新该文件。

C:\Users\tf>net file /?
The syntax of this command is:

NET FILE
[id [/CLOSE]]

或者使用计算机管理中的共享部分来实现相同的目的。

答案2

您可以使用处理找到锁定文件的人。甚至移除锁定。唉,这不是一个安全的操作。也许运行应用程序的用户会动态加载您刚刚用不兼容版本替换的 dll。我不认为这与共享有关(句柄实用程序会告诉您有关信息),而且我不知道如何解决此问题 :-(。

答案3

看看什么GNU Emacs做。

当它启动时,它会寻找更新的版本;emacs-版本.exe在哪里版本比当前版本更新。然后他们安装emacs.exeemacs-版本.exe仅当后者无法安装时才会抱怨。

对于内部产品,如果您没有版本,只需考虑查找main-1.exe,如果失败main-2.exe等等,则只需在安装时创建一个新文件即可。 makemain.exe搜索编号最高的版本。

您的安装程序还可以删除较旧的main-.exe文件,如果你喜欢的话。

相关内容