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;
        }