При создании серийных номеров программного обеспечения часто необходимо найти способы различать разные машины, чтобы другие не могли купить код активации и использовать его повсюду.
Но если вы используете cpu_id, mac адрес и т.п., то столкнетесь с некоторыми проблемами (идентификация, модификация и т.п.).
Вот способ получить UUID компьютера, который может работать под Windows и Linux. Это связано с аппаратной частью системы, но не полностью.
QString _getComputerUUID()
{
QProcess process;
#ifdef Q_OS_WIN
// wmic csproduct get uuid
QStringList mList;
mList << "csproduct" << "get" << "uuid";
process.start("wmic", mList);
process.waitForFinished();
QString ret = process.readAll();
ret = ret.trimmed();
QStringList dataList = ret.split("\r\n");
if(dataList.length() != 2)
{
return "";
}
return dataList[1].trimmed();
#endif
#ifdef Q_OS_LINUX
QStringList mList;
mList << "-s" << "system-uuid";
process.start("dmidecode", mList);
process.waitForFinished();
QString ret = process.readAll();
ret = ret.trimmed();
return ret;
#endif
return "";
}