ファイルパスからサービス名称(WINDOWS)を取得する。
最初、WinAPIで構築していましたがOpenServiceでError5になるものがあったため、レジストリで対応。
本来であればWindAPIを使うほうがよいかとは思います;;
環境:QT5.5
リンク
http://doc.qt.io/qt-5/qstring.html
http://doc.qt.io/qt-5/qstringlist.html
http://doc.qt.io/qt-5/qsettings.html
インクルードファイル
1 2 3 | #include <QString> #include <QStringList> #include <QSettings> |
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //*** ファイルの絶対パスから対応するサービスの名称を取得する(Windows) QString strSrvfile = "C\test\tset.exe"; // サービスのファイル // レジストリからサービスの情報を取得する QSettings regService(REG_KEY_SERVICE, QSettings::NativeFormat); QStringList strlSrv = regService.childGroups(); QString strRegKey; QString strImagePath, strCompPath; QString strSrvName; // ImagePathが合致するものを探す for (int i=0; i<strlSrv.count(); i++ ) { // ImagePathの値を設定 strRegKey = strlSrv.at(i) + "/imagePath"; strImagePath = regService.value(strRegKey).toString(); // ImagePathが空の場合は比較は行わない if ( strImagePath.isEmpty() ) continue; // 値を比較 strCompPath = strImagePath.replace("%", "\\"); if ( strSrvFile.endsWith(strCompPath, Qt::CaseInsensitive) ) { strSrvName = strlSrv.at(i); break; } } |
コメント