|
In questo articolo andiamo ad esporre un esempio della tecnica descritta
nell'articolo SelfAsSystem che consente
l'esecuzione del processo corrente con l'utenza SYSTEM. Ora costruiremo un
applicativo che si comporti proprio come explorer.exe e proveremo poi a
lanciarlo con l' utenza SYSTEM: utilizzeremo l'esempio per sfogliare ed
analizzare i punti di ripristino che si trovano a partire dalla cartella
C:\system volume information. Come costruire tale applicativo???
Semplicissimo, basta usare i componenti ShellTreeView e ShellListView
presenti nel tab SAMPLES della paletta dei componenti di Delphi 7. Li si collega
impostando ShellListView1.ShellTreeView = ShellTreeView1 ed ecco ottenuta
l' applicazione. Ora bisogna fare in modo che l' applicazione restituisca anche
"cartelle e file nascosti" e "file protetti di sistema" quando viene eseguita
come SYSTEM. Tali impostazioni corrispondono alle seguenti impostazioni del
registro di sistema:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
;Visualizza Cartelle e File nascosti
"Hidden"=dword:00000001
;Visualizza file protetti di sistema
"ShowSuperHidden"=dword:00000001
1. Implementazione Di seguito l'implementazione del sorgente del progetto
program ShellExp;
uses
Forms,
Windows,
Registry,
SysUtils,
Main in 'Main.pas' {Form1},
uUtils in 'uUtils.pas';
{$R *.res}
procedure VisualizzaNascosti;
var
Registry: TRegistry;
UserName: array[0..80] of char;
nSize: DWord;
begin
nSize := 80;
GetUserName(UserName, nSize);
if LowerCase(UserName) <> 'system' then
Exit;
Registry := TRegistry.Create;
Registry.RootKey := HKEY_CURRENT_USER;
Registry.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\', True);
//cartelle e file nascosti
Registry.WriteInteger('Hidden', 1);
//file protetti e di sistema
Registry.WriteInteger('ShowSuperHidden', 1);
//mostro le estensioni per tutti i tipi di file
Registry.WriteInteger('HideFileExt', 0);
Registry.CloseKey;
Registry.Free;
end;
begin
RunSelfAsSystem;
Application.Initialize;
VisualizzaNascosti;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
2. Programma in esecuzione Lanciamo in pratica una shell come SYSTEM e ci si può così divertire a sfogliare cartelle e file che solitamente non si ha la possibilità di vedere 
RestorePoints
|