private bool Write(RegistryDataTypes registryDataEntry) { if (registryDataEntry.Data == null) { return(false); } try { RegistryKey rk = BaseRegKeyCurrentUser; RegistryKey sk1 = rk.OpenSubKey(SubKey, RegistryKeyPermissionCheck.ReadWriteSubTree) ?? rk.CreateSubKey(SubKey, RegistryKeyPermissionCheck.ReadWriteSubTree); sk1?.SetValue(registryDataEntry.KeyName, registryDataEntry.Data, registryDataEntry.DataType); return(true); } catch (Exception ex) { Log.Error(ex, "Writing registry" + registryDataEntry.KeyName, ex); return(false); } }
public void SaveObjectToRegistry(object objToSave) { try { Type objType = objToSave.GetType(); var properties = objType.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo propertyInfo in properties) { string propertyName = propertyInfo.Name; RegistryDataTypes registryData = null; if (propertyInfo.PropertyType == typeof(string)) { registryData = new RegistryDataTypeString { KeyName = propertyName, Data = propertyInfo.GetValue(objToSave) } } ; else if (propertyInfo.PropertyType == typeof(int)) { registryData = new RegistryDataTypeDWORD { KeyName = propertyName, Data = propertyInfo.GetValue(objToSave) } } ; else if (propertyInfo.PropertyType == typeof(long)) { registryData = new RegistryDataTypeQWORD { KeyName = propertyName, Data = propertyInfo.GetValue(objToSave) } } ; else if (propertyInfo.PropertyType == typeof(bool)) { registryData = new RegistryDataTypeString { KeyName = propertyName, Data = (bool)propertyInfo.GetValue(objToSave) ? "true" : "false" } } ; else if (propertyInfo.PropertyType.BaseType == typeof(Enum)) { registryData = new RegistryDataTypeDWORD { KeyName = propertyName, Data = (int)propertyInfo.GetValue(objToSave) } } ; else if (propertyInfo.PropertyType == typeof(Size) || propertyInfo.PropertyType == typeof(Point)) { try { registryData = new RegistryDataTypeString { KeyName = propertyName, Data = SerializeStructToString(propertyInfo.GetValue(objToSave)) }; } catch (Exception ex) { Log.Error(ex, "SaveObjectToRegistry Exception"); } } else if (propertyInfo.PropertyType == typeof(DateTime)) { registryData = new RegistryDataTypeQWORD { KeyName = propertyName, Data = ((DateTime)propertyInfo.GetValue(objToSave)).Ticks }; } else if (VerifyObjectToSerialize(propertyInfo.GetValue(objToSave))) { registryData = new RegistryDataTypeString { KeyName = propertyName, Data = SerializedObjPrefix + SerializeObjectToString(propertyInfo.GetValue(objToSave)) }; } else if (propertyInfo.PropertyType.BaseType == typeof(object)) { if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.IsClass) { if (typeof(IEnumerable).IsAssignableFrom(propertyInfo.PropertyType)) { var sb = new StringBuilder(); var collection = propertyInfo.GetValue(objToSave) as IEnumerable; if (collection != null) { foreach (object obj in collection) { sb.AppendLine(obj.ToString()); } registryData = new RegistryDataTypeString { KeyName = propertyName, Data = sb.ToString() }; } } } } if (registryData != null) { Write(registryData); } } } catch (Exception ex) { Log.Error(ex, "SaveObjectToRegistry"); } }