コード例 #1
0
        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);
            }
        }
コード例 #2
0
 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");
     }
 }