1.读取注册表,以读取已经安装的软件为例。
已经安装的软件信息的注册表位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
void Widget::initSoftWareList() { softWareCount=0; softWareList=new QListWidget; softWareList->setFrameShape(QFrame::NoFrame); QSettings reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",QSettings::NativeFormat); QStringList groupsList=reg.childGroups(); foreach(QString group,groupsList) { reg.beginGroup(group); QString softWareName=reg.value("DisplayName").toString(); if(!softWareName.isEmpty()) { softWareList->addItem(new QListWidgetItem(softWareName)); softWareCount++; } reg.endGroup(); } }
主要是要分清childGroups和childKeys。
再看看读取开机自启动信息:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
void Widget::initRunOnStart() { runOnStartCount=0; runOnStartTree=new QTreeWidget; runOnStartTree->setColumnCount(2); runOnStartTree->setHeaderLabels(QStringList()<<tr("名称")<<tr("位置")); runOnStartTree->setFrameShape(QFrame::NoFrame); QSettings reg("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",QSettings::NativeFormat); QStringList keyList=reg.childKeys(); foreach(QString key,keyList) { QString location=reg.value(key).toString(); if(!location.isEmpty()) { runOnStartTree->addTopLevelItem(new QTreeWidgetItem(QStringList()<<key<<location)); runOnStartCount++; } } }
2.读取ini文件
void Widget::initIniText() { QString text; QSettings iniTest("C:\\Users\\Administrator\\Desktop\\test.ini",QSettings::IniFormat); QStringList groupList=iniTest.childGroups(); foreach(QString group,groupList) { iniTest.beginGroup(group); QStringList keyList=iniTest.childKeys(); foreach(QString key,keyList) { text+=key+" "+tr(iniTest.value(key).toString().toStdString().c_str()); } iniTest.endGroup(); } iniText=new QTextEdit(text); iniText->setFrameShape(QFrame::NoFrame); iniText->setReadOnly(true); }