another update pending don't worry.
I'm afraid not, Credits cannot be removed like y_thelastknight said, and also what riodsa123, this is a freeware software and a lot of people spent their time bringing up this program so it can't be done.
and altef_4, y_thelastknight, logrim, pakrat2k2, sentinelks; I finally did this function to read imported regs. can y'all understand it? it can read strings, dword and binary, I'll have to move on to Multistring and ExpandString Soon.
Can't believe I can do such at my age. I'll kill everyone when I get to varsity.
Code:
var
X: Integer;
RegType: String;
FirstLine: Boolean;
begin
OpenDialog1.Filter := 'Registry Files (*.reg)|*.reg';
if OpenDialog1.Execute then
begin
if FileExists(OpenDialog1.FileName) then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
X := 1;
FirstLine := True;
repeat
RegType := AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) -
Length(ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2], AnsiPos('=',
Memo1.Lines.Strings[X + 2]) - 1), '"', '')) - 3),
AnsiPos(':', AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) -
Length(ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2], AnsiPos('=',
Memo1.Lines.Strings[X + 2]) - 1), '"', '')) - 3)));
if (RegType = 'dword:') or (RegType = 'hex:') or
(AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) or
(AnsiPos('@="', Memo1.Lines.Strings[X + 2]) <> 0) or
(AnsiPos('@=dword:', Memo1.Lines.Strings[X + 2]) <> 0) or
(AnsiPos('@=hex:', Memo1.Lines.Strings[X + 2]) <> 0) then
begin
StringGrid6.RowCount := StringGrid6.RowCount + 1;
if FirstLine then
begin
FirstLine := False;
StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[2],
AnsiPos('\', Memo1.Lines.Strings[2]) - 1), '[', '');
StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[2],
Length(Memo1.Lines.Strings[2]) - Length(StringGrid6.Cells[0,
StringGrid6.RowCount - 1]) - 2), ']', ''), '\Wow6432Node', '');
end
else
begin
if AnsiPos('[H', Memo1.Lines.Strings[X + 1]) <> 0 then
begin
StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 1],
AnsiPos('\', Memo1.Lines.Strings[X + 1]) - 1), '[', '');
StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 1],
Length(Memo1.Lines.Strings[X + 1]) - Length(StringGrid6.Cells[0,
StringGrid6.RowCount - 1]) - 2), ']', ''), '\Wow6432Node', '');
end
else
begin
StringGrid6.Cells[0, StringGrid6.RowCount - 1] :=
StringGrid6.Cells[0, StringGrid6.RowCount - 2];
StringGrid6.Cells[1, StringGrid6.RowCount - 1] :=
StringGrid6.Cells[1, StringGrid6.RowCount - 2];
end;
end;
if (AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) or
(AnsiPos('@="', Memo1.Lines.Strings[X + 2]) <> 0) then
StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'String';
if (RegType = 'dword:') or
(AnsiPos('@=dword:', Memo1.Lines.Strings[X + 2]) <> 0) then
StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'DWORD';
if (RegType = 'hex:') or
(AnsiPos('@=hex:', Memo1.Lines.Strings[X + 2]) <> 0) then
StringGrid6.Cells[2, StringGrid6.RowCount - 1] := 'Binary';
if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'String' then
begin
if (AnsiPos('"="', Memo1.Lines.Strings[X + 2]) <> 0) then
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
AnsiLeftStr
(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 4), '\\', '\'), '\"', '"'),
Length(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X
+ 2], Length(Memo1.Lines.Strings[X + 2]) -
Length(StringGrid6.Cells[3, StringGrid6.RowCount - 1]) - 4),
'\\', '\'), '\"', '"')) - 1);
end
else
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
AnsiLeftStr
(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 3), '\\', '\'), '\"', '"'),
Length(ReplaceStr(ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X
+ 2], Length(Memo1.Lines.Strings[X + 2]) -
Length(StringGrid6.Cells[3, StringGrid6.RowCount - 1]) - 3),
'\\', '\'), '\"', '"')) - 1);
end;
end;
if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'DWORD' then
begin
if RegType = 'dword:' then
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
'0x' + AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 9);
end
else
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
'0x' + AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 8),
Length(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 3)) - 1);
end;
end;
if StringGrid6.Cells[2, StringGrid6.RowCount - 1] = 'Binary' then
begin
if RegType = 'hex:' then
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '"', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 7), ',', ' ');
repeat
if AnsiPos('\', Memo1.Lines.Strings[X + 2]) <> 0 then
begin
X := X + 1;
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
StringGrid6.Cells[4, StringGrid6.RowCount - 1] +
ReplaceStr(Memo1.Lines.Strings[X + 2], ',', ' ');
end;
until AnsiPos('\', Memo1.Lines.Strings[X + 2]) = 0;
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
ReplaceStr(StringGrid6.Cells[4, StringGrid6.RowCount - 1],
' \ ', '');
end
else
begin
StringGrid6.Cells[3, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(Memo1.Lines.Strings[X + 2],
AnsiPos('=', Memo1.Lines.Strings[X + 2]) - 1), '@', '');
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
ReplaceStr(AnsiLeftStr(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 6),
Length(AnsiRightStr(Memo1.Lines.Strings[X + 2],
Length(Memo1.Lines.Strings[X + 2]) - Length(StringGrid6.Cells[3,
StringGrid6.RowCount - 1]) - 3)) - 1), ',', ' ');
repeat
if AnsiPos('\', Memo1.Lines.Strings[X + 2]) <> 0 then
begin
X := X + 1;
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
StringGrid6.Cells[4, StringGrid6.RowCount - 1] +
ReplaceStr(Memo1.Lines.Strings[X + 2], ',', ' ');
end;
until AnsiPos('\', Memo1.Lines.Strings[X + 2]) = 0;
StringGrid6.Cells[4, StringGrid6.RowCount - 1] :=
ReplaceStr(StringGrid6.Cells[4, StringGrid6.RowCount - 1],
' \ ', '');
end;
end;
end;
X := X + 1;
if Memo1.Lines.Strings[X + 2] = '' then
X := X + 1;
until Memo1.Lines.Strings[X + 2] = '';
end;
end;
end;
Last edited by Razor12911; 10-01-2014 at 08:28.
|