public static void InjectColor(Color? fgColor, Color? bgColor, Theme theme, Category category, ColorRecord colorRec)
        {
            var regPath = Path.Combine(ThemeReader.RegPath, theme.Guid.ToString("B"), category.Name);
            var reg = Registry.CurrentUser.OpenSubKey(regPath, true);
            var colorData = reg.GetValue("Data") as byte[];

            using (var ms = new MemoryStream(colorData))
            using (var bw = new BinaryWriter(ms))
            {
                if (bgColor != null)
                {
                    ms.Seek(colorRec.BackgroundPos, SeekOrigin.Begin);
                    WriteColor(bgColor.Value, bw);
                }
                if (fgColor != null)
                {
                    ms.Seek(colorRec.ForegroundPos, SeekOrigin.Begin);
                    WriteColor(fgColor.Value, bw);
                }

                bw.Flush();
                bw.Close();
                var setData = ms.ToArray();

                reg.SetValue("Data", setData, RegistryValueKind.Binary);
            }
        }
        private static ColorRecord UnpackColorRecord(BinaryReader reader)
        {
            var recordNameLen = reader.ReadInt32();
            var nameBytes = reader.ReadBytes(recordNameLen);

            var colorRecord = new ColorRecord
                {
                    Name = Encoding.UTF8.GetString(nameBytes),
                };
            colorRecord.BackgroundPos = reader.BaseStream.Position;
            colorRecord.Background = UnpackColor(reader);
            colorRecord.ForegroundPos = reader.BaseStream.Position;
            colorRecord.Foreground = UnpackColor(reader);
            return colorRecord;
        }