我在用XP 无限允许用户在 Windows 7 机器上执行远程桌面。
用户在远程桌面上运行本机 win32 exe 应用程序(使用 Delphi 构建)。
当我需要更新 exe 文件并且所有用户从远程桌面注销时,一切正常,但是当我必须在某些用户正在使用时“实时”更新 exe 文件时,我出现了不良行为:
不知何故,exe 被缓存了,并且我遇到了访问冲突错误。
为了替换 live,我重命名了旧的 exe 并将新的 exe 复制到文件夹中。
这个问题能说明什么吗?我遇到的问题可能是因为我使用的是非服务器操作系统(Windows 7 而不是 win 2k8)?你能提出解决方案或向我解释一下这个问题吗?
谢谢。
答案1
简短的回答:不要更改当前正在使用或在活动内存中运行的文件。
如果文件已打开并正在使用,则您去有问题。在有打开的文件句柄的情况下从操作系统/应用程序下拉出文件是大忌。我很惊讶它甚至会让你重命名文件。
它不一定是缓存某些东西,您正在运行的活动应用程序不会假设文件会在没有通知的情况下发生变化。
这就是为什么 Windows 经常强制您重新启动以进行某些更新,许多软件更新程序强制您关闭浏览器或其他“相关”程序(想到了 Java)以完成更新,或者其他更新程序“重新启动”他们正在更新的程序(如 Adobe 安装程序)。