我在服务器上存储了一个共享的 excel 文件,它不断显示“此文件已被“其他用户”锁定。是否要以只读方式打开?”。此文件位于 Windows 2003 R2 服务器上,已应用所有相关修补程序和更新。大多数访问此文件的用户都使用 Microsoft Office 2010。我查看了相关修补程序,但无济于事。以下是有关服务器的一些信息
- Microsoft Windows Server 2003 R2 - 带 Service Pack 2 的企业版(长期来看,这些将被虚拟化并更新到 Windows Server 2008/12)
- 英特尔® 至强® CPU E3-1270
- 自动更新 - 每日中午 12:00(服务器可能需要重启才能应用)
在服务器管理器中,如果我查看“打开文件”和会话,我无法查看此文件是否已打开,这让我相信这是客户端 PC 或安全性的问题。我正在尝试使用命令行工具来检查打开的文件。
我的第一个问题是关于打开文件。我可以成功运行以下命令:
openfiles.exe /query /s thissvr /u domain\me /p password /fo csv >>C:\OpenFilesSvr1.csv
我运行的命令比列出的命令多一点,但基本上我可以提取 CSV、格式化为表格并识别文件。在应用相关修复之前,我刚刚编译了 BAT 供用户运行,以便能够识别其中的用户。这不是最佳选择。有没有一种方法可以更好地定位文件,而无需断开它们的连接?
我现在还注意到,用户屏幕上的弹出窗口显示一个用户已锁定文件,但服务器和 openfiles.exe 显示另一个用户。我看到很多论坛都有将文件另存为备用名称然后覆盖、禁用资源管理器上的预览等选项。但这没有帮助。一个微软博客我看到他们的决议如下:
注意:由于 Microsoft Windows 有多个版本,以下步骤可能与您的计算机不同。如果不同,请参阅产品文档以完成这些步骤。退出所有 Word 实例。为此,请按照以下步骤操作:保存所有工作,然后退出所有程序。按 CTRL+ALT+DELETE 打开“Windows 安全”对话框。单击“任务管理器”,然后单击“进程”选项卡。单击 Winword.exe,然后单击“结束进程”。在“任务管理器警告”对话框中,单击“是”。
如果收到一条消息,指出程序没有响应,请单击立即结束。对每个出现的 Winword.exe 重复步骤 d 和 e。在文件菜单上,单击退出任务管理器。启动 Windows 资源管理器,然后浏览到包含您在收到错误消息时尝试打开的文档文件的文件夹。删除所有者文件。
所有者文件与您尝试打开的文档位于同一文件夹中。所有者文件名使用以下约定:它以波浪符号 (~) 开头,后跟美元符号 ($),后跟文档文件名的其余部分。文件扩展名为 .doc。例如,Document.doc 的所有者文件名为 ~$cument.doc。启动 Word。如果 Word 询问您是否要加载对 Global 或 Normal 模板所做的更改,请单击“否”。打开您的文档。
我不认为这是一个正确的解决方案,因为它对用户没有帮助。由于此文件服务器及其承载的角色的重要性,我不希望过多地摆弄它,因此我尝试了尽可能多的解决方法,但到目前为止都没有成功。我很感激您之前遇到的任何修复,因为这现在阻碍了业务。
关于此问题的更新
我现在注意到,这种情况发生在我们正在运行的多个服务器上。我首先想到的是远程访问这些服务器,以应用更改、更新并修复它们自己遇到的任何奇怪锁定。这里的问题是,这些服务器正在做它们被设计用来做的事情——始终处于访问状态。我需要研究在设备上执行重新启动的选项,看看这是否有帮助。
我已经做了一些调查,可能会将注意力从用户锁转移到可能的系统锁上,Handle 或 PsFile 会对此有所帮助。我不想依赖第三方应用程序,但会测试 Unlocker。
如果您有任何建议请告诉我。
答案1
有两种方式可以锁定您的 Excel 文件 - 它可以处于“正在使用”状态,就像另一个进程对该文件的打开句柄一样,但 Microsoft Office 也使用特殊的“锁定文件”(Microsoft 称之为“所有者文件”)。
所有者文件与您尝试打开的工作簿位于同一文件夹中。所有者文件名使用以下约定:以波浪符号 (~) 开头,后跟美元符号 ($),后跟工作簿文件名的其余部分。文件扩展名为 .xlsx。例如,Sheet.xlsx 的所有者文件名为 ~$eet.xlsx。
所有者文件是隐藏的,因此您需要启用“查看隐藏文件和文件夹”才能查看它。如果所有者文件存在,那么您只需将其删除即可“解锁”该文件。
Technet 博客文章中列出了更多信息和故障排除程序权威锁定文件帖子