Eu encontrei o Handle Sysinternals para ser uma ferramenta útil (e gratuita) para esses propósitos.
C:\path\to\handle.exe c:\path\to\favicon.ico
No entanto, o handle.exe funciona apenas com alças locais e não informa quem abriu o arquivo. Este script VBS descobre quem tem o arquivo aberto e pode verificar arquivos em um servidor remoto:
' WhosGotItOpen.vbs
strServername = "." ' A dot is the same as current computer.
' If you want to check remote server, replace dot with the name of the server.
strFilename = "myfile.ext" ' Put the name of your file here.
' Can be also be piece of the path, like: "folder\myfile"
Set objFileSystem = GetObject("WinNT://" & strServername & "/LanmanServer")
If (IsEmpty(objFileSystem) = False) Then
For Each Resource In objFileSystem.Resources
If (Not Resource.User = "") And (Not Right(Resource.User,1) = "$") Then
If Instr(1, Resource.Path, strFilename ,1) > 0 Then
WScript.Echo Resource.user & ";" & Resource.Path
End If
End If
Next
Else
WScript.Echo "Error in filesystem , quitting."
WScript.Quit(2)
End If