Feedback

C# - Save Settings to Registry

Veröffentlicht von am 30.10.2016
(0 Bewertungen)
Erlaubt das Lesen und Schreiben von Einstellungen in die Registry in versch. Datentypen.

Wichtig: In der Funktion GetAppSettingsKey() den Namen der Software für "<SoftwareName>" einsetzen...
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

 using Microsoft.Win32;

public static class AppSettingsManager
    {
        // Einstellungen werden in der Registry gespeichert...

        private static RegistryKey GetAppSettingsKey()
        {
            RegistryKey registryKey = Registry.CurrentUser.CreateSubKey("SOFTWARE\\<SoftwareName>", RegistryKeyPermissionCheck.ReadWriteSubTree);
            return registryKey;
        }

        public static void SetValueString(string name, string value)
        {
            try
            {
                GetAppSettingsKey().SetValue(name, value, RegistryValueKind.String);
            }
            catch (Exception ex)
            {
            }
        }

        public static string GetValueString(string name, string defaultV)
        {
            string r1 = null;
            try
            {
                r1 = (string)GetAppSettingsKey().GetValue(name, null);
            }
            catch (Exception ex)
            {
            }

            if (r1 == null)
            {               
				SetValueString(name, defaultV);
                return defaultV;
            }
            return r1;
        }

        public static void SetValueInt32(string name, int value)
        {          
            try
            {
                GetAppSettingsKey().SetValue(name, value, RegistryValueKind.DWord);
            }
            catch (Exception ex)
            {
            }
        }

        public static int GetValueInt32(string name, int defaultV)
        {
            int r1 = defaultV;
            try
            {
                var k = GetAppSettingsKey();
                r1 = (int)(k.GetValue(name, defaultV));
            }
            catch (Exception ex)
            {
            }

            if (r1 == defaultV)
            {
                SetValueInt32(name, defaultV);
                return defaultV;
            }
            return r1;
        }

        public static void SetValueBool(string name, bool value)
        {
            SetValueInt32(name, value ? 1 : 0);
        }

        public static bool GetValueBool(string name, bool defaultV)
        {
            return (GetValueInt32(name, (defaultV ? 1 : 0))) == 1;
        }
}
Abgelegt unter c#, System, Registry, Settings, Config.

3 Kommentare zum Snippet

Thomas Roskop schrieb am 30.10.2016:
Notiz am Rand: dass bei mir im Catch()-Block nichts ist, ist kein Fehler. Bei mir war da ursprünglich eine Funktion, die den Fehler zu einem Protokollierungs-Helfer weitergeleitet hatte.
Also dort einfach euren eigenen Fehler-Handler einfügen.
Martin Dauskardt schrieb am 30.10.2016:
Tipp: Beim eigenen SW-Design sollte man auf das Sichern in der Registry-DB möglichst verzichten, um sich nicht die Möglichkeit zu verbauen, die Anwendung portabel zu verteilen.
Thomas Roskop schrieb am 30.10.2016:
Das stimmt prinzipiell. Aber bei vielen Anwendungen weiß man entweder, dass diese niemals portabel sein werden oder die Einstellungen sind Computer bezogen – und können somit in der Registry bleiben.
Der Hacken: Viele Entwickler denken so, legen ihre Daten in der Registry ab – aber entfernen diese niemals beim Entfernen der App. So sammelt sich Datenmüll an, der bei jedem Windows-Start mit geladen werden muss und somit der Performance des Systems schadet.
Weshalb Windows auch alle Jahre wieder neu installiert werden will – gängige Registry-Reiniger finden ja auch nur einige Müll-Einträge. Der Rest bleibt …
 

Logge dich ein, um hier zu kommentieren!