スポンサーリンク
ホーム»Qt逆引きマニュアル»その他» Qt:ファイルパスからサービス名称(WINDOWS)を取得

Qt:ファイルパスからサービス名称(WINDOWS)を取得

当サイトは、アフィリエイト広告を利用しています

ファイルパスからサービス名称(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;
        }
    }

コメント

タイトルとURLをコピーしました