过去几周,我们的业务管理系统时不时出现一些问题。它被拒绝访问其使用的某些文件。通过查看“管理打开文件”,我能够确定哪些用户正在访问相关文件。从这里,我使用资源管理器和进程资源管理器来搜索这些文件所在目录的子字符串。我可以看到应该访问这些目录的进程和要访问的文件。问题是搜索句柄根本无法显示有问题的文件,因此我无法确定锁定它们的进程。部分问题在于这些文件是定期访问的,而不是持续访问的。为了确保我追踪有问题的进程的尝试成功,我遵循了以下步骤:
- 刷新管理打开文件,直到显示相关文件已被用户打开。
- 在句柄中搜索目录的子字符串。
- 再次刷新管理打开的文件以查看句柄搜索完成后文件仍在被访问。
从理论上讲,这些步骤应该可以保证我捕获正在使用的文件,但除了我期望的结果之外,我仍然没有得到其他结果。
有人对我如何确定哪个进程正在访问这些文件还有其他想法吗?我确信正在访问这些文件的用户,并且我一直在远程从他们的工作站运行句柄搜索。
[EDIT1] 服务器运行的是 Windows Server Standard,客户端计算机都运行的是 Windows 7 Professional。这些文件是 CCC One(一家碰撞修复公司)导出的估计文件,被拒绝访问的程序是 Nexsyis 的 NEX(我们的业务管理系统)。至于协议,我不太确定,但我想是 SMB。
答案1
我假设您说的是 Windows Server。如果是这样,我建议您查看以下工具:
- 资源监视器:
Start > Run > resmon
。“磁盘”列出进程、打开的文件和读/写操作。 Computer Management > Shared Folders > Shares
(compmgmt.msc
)查看开放的网络共享。- 命令
net session
- Sysinternals 进程浏览器
handles
- 您可以使用Ctrl+搜索f - Sysinternals 进程监视器- 您可以设置“长期”捕获以匹配有问题的文件路径,并在尝试重现问题时将其保留一段时间。
无论哪种方式 - 我建议提供额外的技术细节来帮助回答您的问题(例如操作系统,工具和使用的协议)。