Qt как получить приложение для получения контрольной суммы md5

Работа над приложением 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;

2

Решение

Ты забыл позвонить open на theFile,

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

Кроме того, вы должны использовать QCoreApplication::applicationFilePath() чтобы получить путь к исполняемому файлу.

0

Другие решения

Вы должны создать независимое приложение (назовем его myApp), которые проверяют сумму MD5 и сравнивают ее с вашим PHP-скриптом и запрашивают обновление, если это необходимо, или загружают приложение напрямую.

Вот так : myApp=> Нужно обновить? (Обновить) : (TheRealApp)

0

Хорошо, похоже, он просто не нашел файл. Я пробовал абсолютный путь вместо родственника, и это сработало. Я должен выяснить, что происходит не так, но похоже, что он может читать сам во время работы.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector