2

Qt アプリケーションに取り組んでいます。exeファイルが実行中にmd5チェックサムを返すようにしようとしています。これどうやってするの?

私はこれを試しました:

QFile theFile("file.exe");
QByteArray thisFile;
if (theFile.open(QIODevice::ReadOnly))
{
    thisFile = theFile.readAll();
}
else
{
    qDebug() << "Can't open";
}

qDebug() << QString("%1").arg(thisFile.length());

fileMd5 = QString(QCryptographicHash::hash((thisFile), QCryptographicHash::Md5).toHex().toUpper());

qDebug() << fileMd5;

ただし、これは正しい値を返しません。

アップデート:

他のファイルで動作するようになりました。問題は、実行中にexeを読み取れないことです。

最終更新:

これが解決策です:

QFile theFile(QCoreApplication::applicationFilePath());
QByteArray thisFile;
if (theFile.open(QIODevice::ReadOnly))
{
    thisFile = theFile.readAll();
}
else
{
    qDebug() << "Can't open file.";
}

QString fileMd5 = QString(QCryptographicHash::hash((thisFile), QCryptographicHash::Md5).toHex());

qDebug() << fileMd5;
4

3 に答える 3

0

openに電話するのを忘れましたtheFile

if (!theFile.open(QIODevice::ReadOnly))
    // Handle error here

また、QCoreApplication::applicationFilePath()実行可能ファイルへのパスを取得するために使用する必要があります。

于 2013-10-16T15:05:36.593 に答える