#pragma once #include #include class QSettings; class ConfigHelper { public: static ConfigHelper& instance(); static int runElevatedWriteCommandIfRequested(); static QString executableNameForCurrentPlatform(const QString& configuredValue, const QString& fallbackBaseName); static bool writeFileWithElevationIfNeeded(const QString& path, const QByteArray& data, QString* errorMessage = nullptr); static bool removeFileWithElevationIfNeeded(const QString& path, QString* errorMessage = nullptr); QString getValue(const QString& section, const QString& key) const; bool setValue(const QString& section, const QString& key, const QString& value); QString configPath() const; QString installRoot() const; QString runtimeRoot() const; QString dataRoot() const; QString dataConfigDir() const; QString clientIdentityPath() const; QString policyPath() const; QString localStatePath() const; QString updateRoot() const; QString runtimeRelativePath() const; QString lastError() const; private: ConfigHelper(); bool migrateLegacyIniIfNeeded(); void enterRegistryGroup(QSettings& settings) const; bool syncRegistryFromConfigFileIfChanged(); bool sanitizeConfigFileAfterImport(QSettings& settings); bool removeRegistryValue(const QString& key) const; QString readEmbeddedValue(const QString& key) const; bool readRegistryValue(const QString& key, QString* value) const; bool writeRegistryValue(const QString& key, const QString& value); QString readFileValue(const QString& key) const; QString m_configPath; QString m_registryInstallId; QString m_error; };