Subversion Repositories recyclebinunit

Compare Revisions

No changes between revisions

Regard whitespace Rev 72 → Rev 73

/trunk/Recycle Bin Unit/Patch Recycle Bin Unit Objektorientiert (Gescheitert).patch
File deleted
/trunk/Recycle Bin Unit/Papierkorbanalysen/Funktionell/Vista Example
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/Recycle Bin Unit/PurgeInfo Interpretation Theorety.txt
1,9 → 1,8
Windows 95
PurgeInfo Interpretation Theorety
by Daniel Marschall
 
= Locality =
Windows 95 "PurgeInfo" Analysis by Daniel Marschall
 
= Location =
 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\BitBucket: PurgeInfo (Binary)
 
= Data structure =
10,19 → 9,19
 
Offset 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
Data 48 00 00 00 01 00 00 00 0A 00 0A 00 0A 00 0A 00
Sign ?? ?? ?? ?? GS ?? ?? ?? Pa ?? Pb ?? Pc ?? Pd ??
Sign < cbSize > <GS > <Pa > <Pb > <Pc > <Pd >
 
Offset 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
Data 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00
Sign Pe ?? Pf ?? Pg ?? Ph ?? Pi ?? Pj ?? Pk ?? Pl ??
Sign <Pe > <Pf > <Pg > <Ph > <Pi > <Pj > <Pk > <Pl >
 
Offset 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
Data 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00
Sign Pm ?? Pn ?? Po ?? Pp ?? Pq ?? Pr ?? Ps ?? Pt ??
Sign <Pm > <Pn > <Po > <Pp > <Pq > <Pr > <Ps > <Pt >
 
Offset 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
Data 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00
Sign Pu ?? Pv ?? Pw ?? Px ?? Py ?? Pz ?? ?? ?? PG ??
Sign <Pu > <Pv > <Pw > <Px > <Py > <Pz > <PH > <PG >
 
Offset 40 41 42 43 44 45 46 47
Data 00 00 00 00 04 0D 02 00
35,19 → 34,15
0x00 = Individual settings for every drive
0x01 = Global settings for all drives
 
Pa..Pz
Percentage of the drive A..Z
Pa..Pz Percentage of the drive A..Z
PH Percentage of "homedrive" (drive '@', I am not sure what that means)
PG Percentage of all drives (Global setting)
0x00 = 0%
0x64 = 100%
 
PG
Percentage of all drives (Global setting)
0x00 = 0%
0x64 = 100%
 
N1
"Nuke on delete" setting in a bitmask (7..0)
Bit 0 = Flag for device A
Bit 0 (LSB) = Flag for device A
Bit 1 = Flag for device B
Bit 2 = Flag for device C
Bit 3 = Flag for device D
54,11 → 49,11
Bit 4 = Flag for device E
Bit 5 = Flag for device F
Bit 6 = Flag for device G
Bit 7 = Flag for device H
Bit 7 (MSB) = Flag for device H
 
N2
"Nuke on delete" setting in a bitmask (7..0)
Bit 0 = Flag for device I
Bit 0 (LSB) = Flag for device I
Bit 1 = Flag for device J
Bit 2 = Flag for device K
Bit 3 = Flag for device L
65,11 → 60,11
Bit 4 = Flag for device M
Bit 5 = Flag for device N
Bit 6 = Flag for device O
Bit 7 = Flag for device P
Bit 7 (MSB) = Flag for device P
 
N3
"Nuke on delete" setting in a bitmask (7..0)
Bit 0 = Flag for device Q
Bit 0 (LSB) = Flag for device Q
Bit 1 = Flag for device R
Bit 2 = Flag for device S
Bit 3 = Flag for device T
76,26 → 71,15
Bit 4 = Flag for device U
Bit 5 = Flag for device V
Bit 6 = Flag for device W
Bit 7 = Flag for device X
Bit 7 (MSB) = Flag for device X
 
N4
"Nuke on delete" setting in a bitmask (7..0)
Bit 0 = Flag for device Y
Bit 0 (LSB) = Flag for device Y
Bit 1 = Flag for device Z
Bit 2 = Unknown
Bit 2 = Flag for "homedrive"
Bit 3 = Flag for global setting
Bit 4 = Unknown
Bit 5 = Unknown
Bit 6 = Unknown
Bit 7 = Unknown
 
= Already confirmed =
 
Checked with Windows 95b with 1 FAT32 drive.
 
The functionality of following bytes was confirmed:
- GS: Global settings
- Pc: Percentage of drive C
- PG: Percentage of global configuration
- N1: Value 0x04 (0000 0100) and 0x00 (0000 0000) for changes at drive C
- N4: Value 0x08 (0000 1000) and 0x00 (0000 0000) for changes at the global configuration
Bit 7 (MSB) = Unknown
/trunk/Recycle Bin Unit/RecyclerFunctions.pas
376,6 → 376,34
LNG_NOT_CALLABLE = '%s not callable';
LNG_ERROR_CODE = '%s (Arguments: %s) returns error code %s';
 
function _DeleteDirectory(const Name: string): boolean;
var
F: TSearchRec;
begin
result := true;
if FindFirst(IncludeTrailingPathDelimiter(Name) + '*', faAnyFile, F) = 0 then
begin
try
repeat
if (F.Attr and faDirectory <> 0) then
begin
if (F.Name <> '.') and (F.Name <> '..') then
begin
result := result and _DeleteDirectory(IncludeTrailingPathDelimiter(Name) + F.Name);
end;
end
else
begin
if not DeleteFile(IncludeTrailingPathDelimiter(Name) + F.Name) then result := false;
end;
until FindNext(F) <> 0;
finally
FindClose(F);
end;
if not RemoveDir(Name) then result := false;
end;
end;
 
function _FileSize(FileName: string): int64;
var
fs: TFileStream;
1890,6 → 1918,7
end
else
begin
// TODO: aber vielleicht möchte man die Papierkörbe aller Benutzer (also aller SIDs) finden!!!
dir := drive + DriveDelim + PathDelim + '$recycle.bin'+PathDelim+_getMySID()+PathDelim;
if IncludeInfofile and (fileid <> '') then
begin
2044,7 → 2073,7
end
else
begin
directoryexists(tmp);
_DeleteDirectory(tmp);
result := directoryexists(tmp);
end;
end;
/trunk/Recycle Bin Unit/ShellState Analyse.txt
18,7 → 18,7
[X] 21h 0 0 1 0 0[0]0 1
[X]1st 20h 0 0 1 0 0[0]0 0
 
Windows 2000 Professional (Some other Settings!)
Windows 2000 Professional (Some other settings!)
ShGetSettings: OK
[ ] 65h 0 1 1 0 0[1]0 1
[X] 61h 0 1 1 0 0[0]0 1