Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Eseguire una shell come SYSTEM e, ad esempio, sfogliare i punti di rispristino


Nell' articolo "eseguire un processo con l'utenza system" abbiamo visto come eseguire un programma 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. Dunqueee .... dando un'occhiata alla saga sulla personalizzazione della shell di Windows  si può vedere che 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

 

Bene, basta quindi impostare tali valori di registro se il programma viene eseguito come SYSTEM. Direi di mettere il tutto nel sorgente del progetto corrispondente alla form su cui abbiamo disposto i 2 componenti ShellTreeView e ShellListView opportunamente collegati tra loro.

 

program ShellExp; uses Forms, Windows, Registry, SysUtils, Main in 'Main.pas' {Form1}; {$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\', False); //cartelle e file nascosti Registry.WriteInteger('hidden', 1); //file protetti di sistema Registry.WriteInteger('showsuperhidden', 1); Registry.CloseKey; Registry.Free; end; begin Application.Initialize; VisualizzaNascosti; Application.CreateForm(TForm1, Form1); Application.Run; end.

 

Ok, a questo punto prendiamo il programma SystemProcess.exe, lanciamolo

Inseriamo il nome dell'eseguibile (comprensivo di percorso completo) nella casella di testo, un click su "esegui come system" e via

 

Behh abbiamo lanciato 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.

Shell_exp

 

 
 
Your Ad Here