visual uso texto studio saber puede proceso por otro ocupado obtener net esta crear cerrar cerrado cargar archivo acceso abierto c# .net

c# - uso - saber si un archivo esta abierto vb net



¿Cómo obtengo la lista de identificadores de archivos abiertos por proceso en C#? (7)

¿Cómo obtengo la lista de identificadores de archivos abiertos por ID de proceso en C #?

Estoy interesado en profundizar y obtener los nombres de los archivos también.

Buscando el equivalente programático de lo que hace el explorador de procesos.

Lo más probable es que esto requiera interoperabilidad.

Considerando agregar una recompensa por esto, la implementación es desagradablemente complicada.


Eche un vistazo a este archivo: http://vmccontroller.codeplex.com/SourceControl/changeset/view/47386#195318

Y use:

DetectOpenFiles.GetOpenFilesEnumerator(processID);

Manifestación:

using System; using System.Diagnostics; namespace OpenFiles { class Program { static void Main(string[] args) { using (var openFiles = VmcController.Services.DetectOpenFiles.GetOpenFilesEnumerator(Process.GetCurrentProcess().Id)) { while (openFiles.MoveNext()) { Console.WriteLine(openFiles.Current); } } Console.WriteLine(); Console.ReadKey(); } } }

Tiene dependencia sobre el ensamblado System.EnterpriseServices



Handle es un programa excelente, y el enlace al proyecto de código es bueno.

@Brian El motivo del código es que handle.exe NO es redistribuible. Tampoco liberan su fuente.

Parece que .Net no hará esto fácilmente ya que parece que se necesita una unidad de dispositivo incorporada para acceder a la información. Esto no se puede hacer en .NET sin una DLL no administrada. Se trata de un código de kernel relativamente profundo en comparación con la codificación .net típica. Estoy sorprendido de que WMI no exponga esto.


Ouch esto va a ser difícil de hacer desde código administrado.

Hay una muestra en el proyecto de código

La mayoría de las cosas se pueden hacer en interoperabilidad, pero se necesita un controlador para obtener el nombre de archivo porque está en el espacio de direcciones del kernel. Process Explorer incorpora el controlador en sus recursos. Conseguir todo esto conectado desde C # y soportar 64 bits y 32, va a ser un gran dolor de cabeza.



También puede ejecutar la aplicación de línea de comandos, Handle , de Mark Rusinovich, y analizar la salida.