Programarea pe delphi


Programarea pe delphi

Am găsit un modul interesant în rețea - RunAsSystem. destinate executării aplicației cu drepturi de autoritate NT. Și ce, ce utilizator nu visează să-și ridice drepturile la nivelul sistemului. Și așa cum sa gândit în această problemă - de a lansa alte aplicații cu drepturi de sistem, bineînțeles bine, și cum ar fi o aplicație în sine să funcționeze în numele sistemului? Nu scrie același lucru, de fapt, încărcătorul pentru programul tău, nu prea serios. Iată prima soluție care a venit în minte (toate modificările sunt făcute în fișierul proiectului):








Tot ceea ce aplicația face în momentul lansării - creează o copie proprie cu drepturi de autoritate NT. Parametrul "/ sistem" (puteți să-l numiți într-un alt mod) este necesar pentru a evita intrarea într-o buclă infinită.

Această soluție, deși destul de viabilă, are un mic dezavantaj. Cred că cel mai atent ghicit ce este - în cazul în care, la momentul lansării cererii de pe linia de parametrul de comandă „/ sistem“, aplicația va rula cu drepturile contului sub care utilizatorul este de lucru, că nu este logic (și inacceptabil pentru noi).







Acest lucru este fixat destul de simplu - după găsirea opțiunii '/ system' pe linia de comandă, trebuie să verificați din ce cont se execută. Puteți verifica doar numele de utilizator al utilizatorului care a lansat aplicația.


Numele rezultat poate fi comparat cu „sistemul“ numele, dar captura aici este că funcția GetUserName returnează numele de utilizator sistem bazat pe localizarea sistemului de operare. Adică, într-un sistem cu localizare engleză, obținem "sistem", și cu "sistemul" rusesc. Această metodă nu este adecvată din cauza lipsei de universalitate în ea. Dar ce ar trebui să comparăm atunci? Identificatori de securitate (SID) de conturi! Funcția de obținere a contului SID este următoarea:


După ce căutăm parametrii liniei de comandă, adăugăm încă un control:


Codul final de descărcare a aplicației arată astfel:


Desigur, pentru ca toate acestea să funcționeze, este necesar ca grupul "Administratori" să includă un utilizator cu drepturi de sistem. Acest lucru limitează oarecum posibilitățile de utilizare a acestui cod, dar uneori (cel puțin pe un computer de acasă) acest lucru poate fi foarte util.

Asta e, succes în programare!







Articole similare

Trimiteți-le prietenilor: