4

背景:

我们公司的内部用户在 10-20 个 Windows 终端服务器上运行我们的 .Net 程序。可执行文件都存储在运行 windows 2003 的中央文件服务器上。一些终端服务器运行 windows 2003,有些运行 2008。

问题:

当我们发布其中一个程序的新版本时,我们重命名了可能被锁定的文件(EXE、DLL 等),然后我们将新版本的文件复制到正确的位置。在我们开始引入 Windows 2008 终端服务器之前,这一直是完美的。现在,如果某个 2008 WTS 上的用户正在运行该程序,那么文件将被锁定,甚至无法重命名。

问题

  • 有没有办法重命名锁定的文件?

  • 有没有办法禁用 2008 年的新功能,即在运行时锁定 EXE 文件?

  • 有更好的解决方案吗?

4

3 回答 3

3

并不真地。如果一个文件被锁定,它就会被锁定,除非持有锁的进程释放它或该用户的网络共享连接断开,否则您无法对该文件做太多事情。

您应该切换到ClickOnce部署,而不是从网络共享运行可执行文件。除了您描述的更新问题之外,从网络共享运行对代码访问安全性有影响,并对应用程序的初始负载产生性能影响。

于 2010-07-29T17:35:26.883 回答
3

我们的问题原来是由于 Windows 文件共享中称为“机会锁定”的新功能。当两台服务器都是 2008 时,目前无法关闭此功能。

我们目前有一个案例,微软正在寻找其他解决方案并进行一轮工作。目前倾向于使用 DFS。

于 2010-08-17T16:07:19.480 回答
1

一般来说,您应该可以毫无问题地重命名 Windows 2008 终端服务器上的锁定文件,就像在从第一个 Windows NT 3.1 开始的所有以前版本的 Windows NT 上一样。

可能您用于文件重命名的程序有问题。您可以直接在资源管理器中的旧操作系统中执行此操作,以后不再这样做。但是可以重命名CMD.EXE. 只需启动cmd.exe并尝试rename命令。

于 2010-07-29T17:37:05.417 回答