Program futtatása rendszergazdai jogok nélkül és egy UAC kérés elnyomása

Sok program megköveteli a jogok emelését az indításkor (az ikon pajzs ikonja), de valójában nem igényelnek rendszergazdai jogokat a normál működéshez (például manuálisan megadta a felhasználók számára a szükséges jogokat a Program Files programkönyvtárának és a program által használt nyilvántartási ágaknak). Ennek megfelelően, amikor egy ilyen programot egy egyszerű felhasználótól indít, ha a felhasználói fiókok vezérlése engedélyezve van a számítógépen, akkor megjelenik egy UAC kérés, és a felhasználónak adminisztrátori jelszót kell megadnia. Ennek a mechanizmusnak a megkerülésére sokan egyszerűen letiltják az UAC-t, vagy megadják a felhasználó rendszergazdai jogait a számítógépen, és hozzáadják őket a helyi rendszergazdák csoportjához. Természetesen mindkét módszer nem biztonságos..

Tartalom:

  • Miért lehet, hogy egy normál alkalmazásnak szüksége van rendszergazdai jogokra
  • Olyan program futtatása, amely rendszeres felhasználó számára adminisztrátori jogokat igényel
  • __COMPAT_LAYER környezeti változó és RunAsInvoker paraméter

Miért lehet, hogy egy normál alkalmazásnak szüksége van rendszergazdai jogokra

Rendszergazdai jogosultságokra van szükség ahhoz, hogy a program bizonyos fájlokat (naplókat, konfigurációkat stb.) Módosítson a C: \ Program Files (x86) \ SomeApp mappában lévő saját mappájában. Alapértelmezés szerint a felhasználóknak nincs engedélyük ennek a könyvtárnak a szerkesztésére, ilyen program normál működéséhez rendszergazdai jogok szükségesek. A probléma megoldásához manuálisan kell hozzárendelnie a felhasználó (vagy a Felhasználók csoport) módosítási / írási jogát az NTFS szintű rendszergazda alatt lévő programmappához..

megjegyzés. Valójában helytelen az az alkalmazás adatainak a saját könyvtárában történő tárolása a C: \ Program Files könyvtárban. Helyesebb az alkalmazási adatokat felhasználói profilban tárolni. De ez a kérdés már a fejlesztők lustaságára és inkompetenciájára vonatkozik.

Olyan program futtatása, amely rendszeres felhasználó számára adminisztrátori jogokat igényel

Korábban leírtuk, hogyan lehet letiltani egy adott program UAC kérését a RunAsInvoker paraméter használatával. Ez a módszer azonban nem elég rugalmas. A RunAs-kat a rendszergazda / SAVECRED jelszavával is használhatja (ez szintén nem biztonságos). Fontoljon meg egy egyszerűbb módszert arra, hogy bármilyen programot elindítson rendszergazdai jogok nélkül (és rendszergazdai jelszó megadása nélkül), ha az UAC engedélyezve van (az UAC csúszka 4,3 vagy 2 szintje).

Vegyük például a beállításjegyzék-szerkesztő segédprogramot - regedit.exe (a C: \ windows \ system32 könyvtárban található). A regedit.exe indításakor megjelenik az UAC ablak, és ha nem erősíti meg a jogosultság emelkedését, a rendszerleíróadatbázis-szerkesztő nem indul el..

Hozzon létre egy fájlt az asztalon run-as-nem-admin.bat a következő szöveggel:

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

Most, hogy kényszerítse az alkalmazást rendszergazdai jogok nélküli futtatásához és az UAC-kérés elnyomásához, húzza a kívánt exe fájlt az asztalon lévő bat fájlba..

Ezt követően a beállításjegyzék-szerkesztőnek UAC-kérés nélkül el kell indulnia. Nyissa meg a folyamatkezelőt, és adjon hozzá egy oszlopot Emelkedett (Magasabb szintű engedélyek esetén) látni fogja, hogy a rendszer regedit.exe folyamata változatlan állapotú (felhasználói jogokkal kezdve).

Próbáljon meg szerkeszteni a HKLM ág bármely paraméterét. Mint láthatja, a fióktelep szerkesztésének hozzáférését megtagadják ebben az ágban (ez a felhasználó nem rendelkezik írási jogosultsággal a rendszerleíró fióktelepekhez). De hozzáadhat és szerkeszthet kulcsokat a saját felhasználói nyilvántartási ágában - HKCU.

Hasonlóképpen futtathat egy bat fájlt és egy adott alkalmazást is, csak adja meg a futtatható fájl elérési útját.

run-app-as-nem-admin.bat

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

Felvehet egy kontextus menüt is, amely lehetővé teszi az összes alkalmazás számára az engedélyek megemelése nélküli futtatását. Ehhez hozzon létre a következő reg fájlt, és importálja a rendszerleíró adatbázisba.

A Windows beállításjegyzék-szerkesztő 5.00-as verziója
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker]
@ = "Futtatás felhasználóként UAC magasság nélkül"
[HKEY_CLASSES_ROOT \ * \ shell \ forcerunasinvoker \ parancs]
@ = "cmd / perc / C \" beállítva __COMPAT_LAYER = RUNASINVOKER && indítás \ "\" \ "% 1 \" \ ""

Ezt követően bármilyen alkalmazás elindításához rendszergazdai jogok nélkül válassza a "Futtatás felhasználóként UAC magasság nélkülmsgstr "a helyi menüben.

__COMPAT_LAYER környezeti változó és RunAsInvoker paraméter

A __COMPAT_LAYER környezeti változó lehetővé teszi az alkalmazások különféle kompatibilitási szintjeinek beállítását (fül kompatibilitás az exe fájl tulajdonságaiban). E változó használatával meghatározhatja azokat a kompatibilitási beállításokat, amelyekkel a programot futtatni kell. Ha például az alkalmazást kompatibilis módban szeretné futtatni a Windows 7 rendszerrel és 640 × 480 felbontással, állítsa be:

set __COMPAT_LAYER = Win7RTM 640x480

A __COMPAT_LAYER változó érdekes lehetőségei közül a következő paramétereket emeljük ki:

  • RunAsInvoker - egy alkalmazás futtatása a szülő folyamat jogosultságaival UAC kérés nélkül.
  • RunAsHighest - az alkalmazás elindítása a felhasználó számára elérhető maximális jogokkal (az UAC kérés akkor jelenik meg, ha a felhasználó rendszergazdai jogokkal rendelkezik).
  • RunAsAdmin - az alkalmazás futtatása rendszergazdai jogokkal (az AUC kérés mindig megjelenik).

Ie a RunAsInvoker paraméter nem biztosít rendszergazdai jogokat, hanem csak blokkolja az UAC ablak megjelenését.