Spustenie programu bez administrátorských práv a potlačenie požiadavky UAC

Mnoho programov vyžaduje pri spustení zvýšenie práv (ikona štítu pre ikonu), aby však správne fungovali, nepotrebujú administrátorské práva (napríklad ste používateľom manuálne udelili potrebné práva pre programový adresár v programových súboroch a vetvy registrov používané programom). Podobne pri spustení takéhoto programu od jednoduchého používateľa, ak je v počítači povolená kontrola používateľských kont, sa objaví požiadavka UAC a užívateľ bude musieť zadať heslo správcu. Aby sa tento mechanizmus obišiel, mnohí jednoducho vypnú UAC alebo poskytnú administrátorské práva užívateľa v počítači a pridajú ich do skupiny miestnych administrátorov. Obidve tieto metódy sú samozrejme nebezpečné..

obsah:

  • Prečo bežná aplikácia môže vyžadovať administrátorské práva
  • Spustenie programu, ktorý vyžaduje práva administrátora od bežného používateľa
  • Premenná prostredia __COMPAT_LAYER a parameter RunAsInvoker

Prečo bežná aplikácia môže vyžadovať administrátorské práva

Pre program môžu byť potrebné oprávnenia správcu na úpravu určitých súborov (denníky, konfigurácie atď.) Vo vlastnom priečinku v priečinku C: \ Program Files (x86) \ SomeApp). Používatelia v predvolenom nastavení nemajú oprávnenie upravovať tento adresár. Pre normálnu prevádzku takéhoto programu sú potrebné práva správcu. Ak chcete tento problém vyriešiť, musíte používateľovi (alebo skupine Users) manuálne priradiť právo na úpravu / zápis do programového priečinka pod správcom na úrovni NTFS..

poznámka. V skutočnosti je prax ukladania zmien aplikačných údajov do jej vlastného adresára v C: \ Program Files nesprávna. Správnejšie je ukladať aplikačné údaje do užívateľského profilu. Táto otázka sa však už týka lenivosti a nekompetentnosti vývojárov.

Spustenie programu, ktorý vyžaduje práva administrátora od bežného používateľa

Už sme opísali, ako môžete zakázať žiadosť UAC pre konkrétny program pomocou parametra RunAsInvoker. Táto metóda však nie je dostatočne flexibilná. Môžete tiež použiť RunAs s heslom správcu / SAVECRED (tiež nebezpečné). Zvážte jednoduchší spôsob, ako prinútiť spustenie ľubovoľného programu bez administrátorských práv (a bez zadania hesla správcu) s povoleným UAC (4,3 alebo 2 úroveň jazdca UAC).

Vezmite si napríklad pomocný program na úpravu registra - regedit.exe (nachádza sa v adresári C: \ windows \ system32). Keď spustíte program regedit.exe, zobrazí sa okno UAC a ak nepotvrdíte zvýšenie privilégií, editor databázy Registry sa nespustí..

Vytvorte súbor na pracovnej ploche run-as-non-ADMIN.B s nasledujúcim textom:

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

Teraz, ak chcete aplikáciu prinútiť spustiť bez oprávnení správcu a potlačiť požiadavku UAC, jednoducho presuňte požadovaný súbor exe do tohto súboru bat na pracovnej ploche..

Potom by mal editor databázy Registry začať bez žiadosti UAC. Otvorte správcu procesov a pridajte stĺpec vznešený (S vyššou úrovňou oprávnení) uvidíte, že systém má proces regedit.exe s neexpandovaným stavom (začatý s užívateľskými právami).

Skúste upraviť ktorýkoľvek parameter v vetve HKLM. Ako vidíte, prístup k úprave registra v tejto vetve je odmietnutý (tento používateľ nemá oprávnenie na zápis do vetiev systémového registra). Môžete však pridávať a upravovať kľúče vo svojej vlastnej vetve registrov používateľov - HKCU.

Podobne môžete spustiť bat súbor a konkrétnu aplikáciu, stačí zadať cestu k spustiteľnému súboru.

run-app-as-non-ADMIN.B

Set ApplicationPath = "C: \ Program Files \ MyApp \ testapp.exe"
cmd / min / C "set __COMPAT_LAYER = RUNASINVOKER && start" "% ApplicationPath%"

Môžete tiež pridať kontextové menu, ktoré pridáva možnosť spúšťania všetkých aplikácií bez zvýšenia oprávnení. Ak to chcete urobiť, vytvorte nasledujúci súbor reg a importujte ho do registra.

Editor databázy Registry systému Windows, verzia 5.00
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker]
@ = "Spustiť ako používateľ bez zvýšenia UAC"
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker \ command]
@ = "cmd / min / C \" nastavený __COMPAT_LAYER = RUNASINVOKER && start \ "\" \ "% 1 \" \ ""

Ak chcete spustiť ľubovoľnú aplikáciu bez práv správcu, vyberte možnosť „Spustiť ako používateľ bez zvýšenia UAC“v kontextovej ponuke.

Premenná prostredia __COMPAT_LAYER a parameter RunAsInvoker

Premenná prostredia __COMPAT_LAYER vám umožňuje nastaviť rôzne úrovne kompatibility aplikácií (tab kompatibilita vo vlastnostiach súboru exe). Pomocou tejto premennej môžete určiť nastavenia kompatibility, s ktorými sa má program spustiť. Napríklad na spustenie aplikácie v režime kompatibility s Windows 7 a rozlíšením 640 × 480, nastavte:

sada __COMPAT_LAYER = Win7RTM 640 x 480

Zo zaujímavých možností pre premennú __COMPAT_LAYER zdôrazňujeme nasledujúce parametre:

  • RunAsInvoker - spustenie aplikácie s oprávneniami nadradeného procesu bez žiadosti UAC.
  • RunAsHighest - spustenie aplikácie s maximálnymi právami, ktoré má užívateľ k dispozícii (žiadosť UAC sa zobrazí, ak má používateľ práva správcu).
  • RunAsAdmin - spustenie aplikácie s administrátorskými právami (vždy sa objaví požiadavka AUC).

tj parameter RunAsInvoker neposkytuje práva správcu, ale blokuje iba vzhľad okna UAC.