Pokretanje programa bez administrativnih prava i suzbijanje UAC zahtjeva

Mnogi programi zahtijevaju povišenje prava prilikom pokretanja (ikona štitnika za ikonu), međutim, kako bi ispravno radili, ne trebaju im administratorska prava (na primjer, ručno ste korisnicima potrebna prava dodijelili u direktoriju programa u programu ProgramFiles i grane registra koje program koristi). Prema tome, kada pokrećete takav program od jednostavnog korisnika, ako je kontrola korisničkog računa omogućena na računalu, pojavit će se UAC zahtjev i korisniku će se morati upisati lozinku administratora. Da bi zaobišli ovaj mehanizam, mnogi jednostavno onemogućavaju UAC ili daju korisničkim administratorima prava na računalu dodajući ih grupi lokalnih administratora. Naravno, obje ove metode nisu nesigurne..

sadržaj:

  • Zašto bi redovita aplikacija mogla trebati administratorska prava
  • Pokretanje programa koji od običnog korisnika zahtijeva administratorska prava
  • __COMPAT_LAYER varijabla okoline i parametar RunAsInvoker

Zašto bi redovita aplikacija mogla trebati administratorska prava

Možda će biti potrebne administratorske povlastice da program može izmijeniti određene datoteke (dnevnike, konfiguracije itd.) U svojoj mapi u C: \ Program Files (x86) \ SomeApp). Korisnici prema zadanim postavkama nemaju dozvolu za uređivanje ove mape, odnosno za normalan rad takvog programa potrebna su administratorska prava. Da biste riješili taj problem, morate ručno dodijeliti pravo na izmjenu / pisanje korisniku (ili grupi korisnika) programskoj mapi pod administratorom na razini NTFS.

primjedba. Zapravo je praksa pohranjivanja promjena podataka o aplikacijama u vlastiti direktorij u C: \ Program Files. Ispravnije je pohranjivanje podataka aplikacije u korisnički profil. Ali ovo se pitanje već odnosi na lijenost i nesposobnost programera.

Pokretanje programa koji od običnog korisnika zahtijeva administratorska prava

Prethodno smo opisali kako možete onemogućiti UAC zahtjev za određeni program pomoću parametra RunAsInvoker. Međutim, ova metoda nije dovoljno fleksibilna. RunAs možete koristiti i sa lozinkom administratora / SAVECRED (također nesigurno). Razmislite o jednostavnijem načinu prisiljavanja bilo kojeg programa na pokretanje bez administrativnih prava (i bez unosa lozinke administratora) s omogućenim UAC-om (4.3 ili 2 razine klizača UAC).

Na primjer, uzmite uslužni program za uređivanje registra - regedit.exe (nalazi se u direktoriju C: \ windows \ system32). Kada pokrenete regedit.exe, pojavit će se prozor UAC i, ako ne potvrdite podizanje privilegija, uređivač registra ne pokreće se..

Stvorite datoteku na radnoj površini izvoditi-as-non-admin.bat sa sljedećim tekstom:

cmd / min / C "postavi __COMPAT_LAYER = RUNASINVOKER && start" "% 1"

Sada, da biste natjerali aplikaciju da se pokreće bez administrativnih prava i suzbili UAC zahtjev, samo povucite željenu exe datoteku u ovu datoteku s batom na radnoj površini.

Nakon toga, uređivač registra trebao bi se pokrenuti bez UAC zahtjeva. Otvorite upravitelj procesa i dodajte stupac povišen (S višom razinom dozvola) vidjet ćete da sustav ima regedit.exe proces s neproširenim statusom (započet s pravima korisnika).

Pokušajte s uređivanjem bilo kojeg parametra u podružnici HKLM-a. Kao što vidite, pristup uređivanju registra u ovoj grani je odbijen (ovaj korisnik nema dozvole pisanja u granama registra sustava). No ključeve možete dodavati i uređivati ​​u vlastitoj ogranci registra korisnika - HKCU.

Slično tome, možete pokrenuti bat datoteku i određenu aplikaciju, samo odredite put do izvršne datoteke.

run-app-kao-ne-admin.bat

Postavi ApplicationPath = "C: \ programske datoteke \ MyApp \ testapp.exe"
cmd / min / C "postavi __COMPAT_LAYER = RUNASINVOKER && start" "% ApplicationPath%"

Možete dodati i kontekstni izbornik koji dodaje mogućnost da se sve aplikacije pokreću bez povišenja dozvola. Da biste to učinili, stvorite sljedeću reg datoteku i uvezite je u registar.

Verzija uređivača registra Windows 5.00
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker]
@ = "Pokreni kao korisnik bez elementa UAC"
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker \ naredba]
@ = "cmd / min / C \" postavljeno __COMPAT_LAYER = RUNASINVOKER && start \ "\" \ "% 1 \" \ ""

Nakon toga, da biste pokrenuli bilo koju aplikaciju bez administrativnih prava, jednostavno odaberite "Pokreni kao korisnik bez elementa UAC"u kontekstnom izborniku.

__COMPAT_LAYER varijabla okoline i parametar RunAsInvoker

Varijabla okruženja __COMPAT_LAYER omogućuje vam postavljanje različitih razina kompatibilnosti za aplikacije (kartica kompatibilnost u svojstvima exe datoteke). Pomoću ove varijable možete odrediti postavke kompatibilnosti s kojima treba pokretati program. Na primjer, da biste pokrenuli aplikaciju u načinu kompatibilnosti sa sustavom Windows 7 i rezolucijom 640 × 480, postavite:

postavite __COMPAT_LAYER = Win7RTM 640x480

Od zanimljivih opcija za varijablu __COMPAT_LAYER, ističemo sljedeće parametre:

  • RunAsInvoker - pokretanje aplikacije s povlasticama nadređenog postupka bez UAC zahtjeva.
  • RunAsHighest - pokretanje aplikacije s maksimalnim pravima koja su dostupna korisniku (UAC zahtjev pojavljuje se ako korisnik ima administratorska prava).
  • RunAsAdmin - pokretanje aplikacije s administratorskim pravima (uvijek se pojavljuje zahtjev AUC).

tj parametar RunAsInvoker ne daje administratorska prava, već samo blokira izgled UAC prozora.