1、Qt利用QSetting读写注册表。
Windows的注册表格式分为根键、子键、键、值四种元素。
根键为最起始的计算机(“/”)。
根键下有五大子键。
每个子键下有下属子键、键、值。
键、值以键值对的形式存在,一个键对应一个值。
每个子键可以有0个或多个键值对。
1.QSettings *reg = newQSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",
2. QSettings::NativeFormat);
3. reg->setValue("registered",true);
4. delete reg;
上述1、2代码为创建一个子键。
3代码为创建一个键值对。
- QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",
- QSettings::NativeFormat);
- if (reg->value("registered",false).toBool())
- {
- QMessageBox::information(NULL,"information","registered");
- }
- delete reg;
上述1、2代码为创建一个子键。(子键存在则指向已存在的子键)。
3代码为判断读取键值对是否成功。
W7下会涉及到修改注册表的管理者权限问题。一个解决办法如下。
所以就以“管理员权限”运行qt creator。在Creator中运行编译后的exe文件,成功的修改了注册表。
realese时,先生成exe文件。再使用win SDK的mt.exe工具把修改后的manifest打包到exe文件中。这时exe文件会被加上一个盾牌的图标,win7启动它时,会自动弹出确认框,让用户授予管理员权限。
2、Qt读取本机网卡MAC地址
可使用QNetworkInterface读取本地网卡地址。注意在Qt项目文件pro中写上QT+=network
QString address =QNetworkInterface::allAddresses().first().toString();
QString localHostName =QHostInfo::localHostName();
qDebug() <<"主机名:"<<localHostName<<"MAC地址:"<<address;
QList<QHostAddress> list2 =QNetworkInterface::allAddresses();
foreach (QHostAddress address, list2)
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
//我们使用IPv4地址
qDebug()<< address.toString();
}
3、Qt加密算法
使用QCryptographicHash类
该类中包括MD4, MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512等加密算法。
1 **********加密开始***********/
2 QString usernamemd5;
3 QString pwdmd5;
4 QByteArray bb;
5 bb = QCryptographicHash::hash ( password.toAscii(), QCryptographicHash::Md5 );
6 pwdmd5.append(bb.toHex());
7 bb = QCryptographicHash::hash(username.toAscii(),QCryptographicHash::Md5);
8 usernamemd5.append(bb.toHex());
9 ***********加密结束****************/