Devolutions/UniGetUI · error · InvalidOperationException

No secure setting matching "{settingKey}" was found.

Error message

No secure setting matching "{settingKey}" was found.

What it means

ResolveSettingKey throws when SettingKey matches neither a SecureSettings.K enum name (case-insensitive) nor any SecureSettings.ResolveKey string. The supplied key is not a known secure-setting identifier.

Source

Thrown at src/UniGetUI.Interface.IpcApi/IpcSecureSettingsApi.cs:98

        }

        if (Enum.TryParse(settingKey, true, out SecureSettings.K enumKey) && enumKey != SecureSettings.K.Unset)
        {
            return enumKey;
        }

        foreach (var key in Enum.GetValues<SecureSettings.K>())
        {
            if (
                key != SecureSettings.K.Unset
                && SecureSettings.ResolveKey(key).Equals(settingKey, StringComparison.OrdinalIgnoreCase)
            )
            {
                return key;
            }
        }

        throw new InvalidOperationException($"No secure setting matching \"{settingKey}\" was found.");
    }

    private static string ResolveUserName(string? userName)
    {
        return string.IsNullOrWhiteSpace(userName) ? Environment.UserName : userName.Trim();
    }
}

View on GitHub (pinned to 9b1d7d0eab)

Solutions

  1. List valid keys via IpcSecureSettingsApi.ListSettings() and use a returned Key/Name
  2. Match exactly one of the enum names or resolved key strings
  3. Re-fetch the key list on version upgrade

Example fix

// before
IpcSecureSettingsApi.GetSetting("DisableTelemetry"); // wrong key
// after
var key = IpcSecureSettingsApi.ListSettings()
    .First(s => s.Name.Equals(want, StringComparison.OrdinalIgnoreCase)).Key;
IpcSecureSettingsApi.GetSetting(key);
Defensive patterns

Strategy: validation

Validate before calling

var validKeys = IpcSecureSettingsApi.ListSettings()
    .Select(s => s.Key).ToHashSet(StringComparer.OrdinalIgnoreCase);
if (!validKeys.Contains(settingKey))
    throw new ArgumentException($"Unknown secure key: {settingKey}");

Prevention

When it happens

Trigger: Passing a setting key spelling that is not a defined secure setting (e.g. a non-secure Settings.K name, a renamed key, or a typo).

Common situations: Using a plain setting name where a secure key is expected; renamed key across versions; typo.

Related errors


AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13). Data as JSON: /api/errors/2ddaa74cae25a80f. Report an issue: GitHub.