2010-08-04 18 views
10

¿cómo puedo calcular el hash MD5 para un archivo que está abierto o utilizado por un proceso?C# ¿calcular MD5 para el archivo abierto?

los archivos se pueden TXT o exe y

mi error corriente de retorno de código para un exe, ya que se está ejecutando

aquí está mi código actual

public static string GetMd5HashFromFile(string fileName) 
{ 
    FileStream file = new FileStream(fileName, FileMode.Open); 
    MD5 md5 = new MD5CryptoServiceProvider(); 
    byte[] retVal = md5.ComputeHash(file); 
    file.Close(); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < retVal.Length; i++) 
    { 
     sb.Append(retVal[i].ToString("x2")); 
    } 
    return sb.ToString(); 
} 

Saludos.

Respuesta

10

intente abrir el archivo como de sólo lectura:

FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); 

o:

FileStream file = File.OpenRead(fileName); 

que funcionarán según el modo de puesta en común de los otros identificadores de archivo. Si el archivo solo está bloqueado porque se está ejecutando un EXE, creo que esto será suficiente.

+0

Muchas gracias, funcionó a la perfección :-) –

6

Si actualiza su llamada de constructor FileStream a esto;

FileStream file = File.Open(fileName, 
          FileMode.Open, 
          FileAccess.Read, 
          FileShare.ReadWrite); 

Eso debería permitirle abrir un archivo que está siendo utilizado por otro proceso.

Cuestiones relacionadas