public static RegChange ReadFromStream(Stream fs)
{
RegChange regChange = new RegChange();
bool flag = false;
byte b = (byte)fs.ReadByte();
while (!ReadFiles.ReachedEndByte(fs, b, 158))
{
switch (b)
{
case 1:
regChange.RegOperation = (RegOperations)ReadFiles.ReadInt(fs);
break;
case 2:
regChange.RegBasekey = (RegBasekeys)ReadFiles.ReadInt(fs);
break;
case 3:
regChange.RegValueKind = (RegistryValueKind)ReadFiles.ReadInt(fs);
break;
case 4:
regChange.SubKey = ReadFiles.ReadDeprecatedString(fs);
break;
case 5:
regChange.ValueName = ReadFiles.ReadDeprecatedString(fs);
break;
case 6:
if (regChange.RegValueKind != RegistryValueKind.ExpandString && regChange.RegValueKind != RegistryValueKind.String)
{
regChange.RegValueKind = RegistryValueKind.String;
}
regChange.ValueData = ReadFiles.ReadDeprecatedString(fs);
break;
case 128:
flag = true;
break;
case 129:
regChange.Is32BitKey = true;
break;
case 7:
switch (regChange.RegValueKind)
{
case RegistryValueKind.Binary:
if (flag)
{
regChange.ValueData = ReadFiles.ReadDeprecatedString(fs);
}
else
{
regChange.ValueData = ReadFiles.ReadByteArray(fs);
}
break;
case RegistryValueKind.DWord:
regChange.ValueData = ReadFiles.ReadInt(fs);
break;
case RegistryValueKind.QWord:
regChange.ValueData = ReadFiles.ReadLong(fs);
break;
case RegistryValueKind.String:
case RegistryValueKind.ExpandString:
case RegistryValueKind.MultiString:
regChange.ValueData = ReadFiles.ReadDeprecatedString(fs);
break;
}
break;
default:
ReadFiles.SkipField(fs, b);
break;
}
b = (byte)fs.ReadByte();
}
return(regChange);
}