10

プロセスによって開かれている、または使用されているファイルの MD5 ハッシュを計算するにはどうすればよいですか?

ファイルはtxtまたはexeにすることができます

私の現在のコードは、exeが実行されているため、exeに対してエラーを返します

ここに私の現在のコードがあります

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();
}

乾杯。

4

2 に答える 2

10

ファイルを読み取り専用で開いてみてください。

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

また:

FileStream file = File.OpenRead(fileName);

これは、他のファイル ハンドルの共有モードに応じて機能します。ファイルが実行中の EXE であるためにロックされているだけであれば、これで十分だと思います。

于 2010-08-04T13:06:49.610 に答える
7

FileStream コンストラクター呼び出しをこれに更新すると、

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

これにより、別のプロセスで使用されているファイルを開くことができます。

于 2010-08-04T13:08:17.490 に答える