La respuesta corta a esto es no.
Sin embargo, la respuesta larga es que hay varias llamadas de API y métodos de WMI que puede utilizar para encontrar esta información, pero no espere que sea rápida y sencilla.
Si desea usar llamadas API, eche un vistazo a la función NtQuerySystemInformation con el parámetro SYSTEM_PROCESS_INFORMATION. Esta es una de esas preciosas métodos "sin papeles" que viene con la maravillosa exención de responsabilidad:
NtQuerySystemInformation puede alterada o no está disponible en futuras versiones de Windows . Las aplicaciones deben usar las funciones alternativas que se enumeran en este tema.
Así que sugeriría evitar eso a favor de usar WMI.
Puede usar la clase WMI Win32_Process para enumerar todos los procesos que se están ejecutando actualmente en la máquina, y luego enumerar todos los identificadores que cada proceso mantiene hasta que encuentre el archivo que está buscando. Desafortunadamente no hay una manera simple de decir "hey, qué proceso está bloqueando este archivo", solo funciona al revés, tiene que buscar en la lista de procesos hasta encontrar el que está bloqueando el archivo que le interesa.
Recomendaría un pequeño artículo sobre CodeProject titulado How To: (Almost) Everything In WMI via C# Part 2: Processes. (La parte 1 también es una buena lectura si le gusta ese tipo de cosas)
La información sería inútil, porque para cuando haga algo con ella, ya no podría ser precisa. –
¿Realmente Josh? Estás seguro de eso ... – SpaceghostAli
@SpaceghostAli Los archivos siempre se bloquean indefinidamente, ¿no? –