使用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;
但是,这不会返回正确的值。
更新
我让它与其他文件一起工作。问题似乎是我在运行时无法读取它。
最终更新:
这是解决方案:
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;
答案 0 :(得分:0)
您忘记在open
上致电theFile
。
if (!theFile.open(QIODevice::ReadOnly))
// Handle error here
此外,您应该使用QCoreApplication::applicationFilePath()
来获取可执行文件的路径。
答案 1 :(得分:0)
您必须创建一个独立的应用程序(让我们称之为myApp
),检查MD5sum并将其与PHP脚本进行比较,并在需要时请求更新或直接加载应用程序。
像这样:myApp
=&gt;需要更新? (更新):( TheRealApp
)
答案 2 :(得分:0)
好吧,看起来它只是找不到文件。我尝试了绝对路径而不是亲戚,它起作用了。我将不得不弄清楚出了什么问题,但看起来它在运行时可以自行解读。