När de startas kräver vissa program behörighetshöjning (skölden bredvid appikonen), men egentligen behöver de inte administratörsbehörighet för normal drift. Till exempel kan du manuellt ge behörigheter för dina användare i appmappen i ProgramFiles och/eller registernycklar som används av programmet. Om användarkontokontroll är aktiverat på datorn, kommer en UAC-prompt att visas och Windows kommer att be användaren att ange administratörslösenordet om du försöker köra ett sådant program som standardanvändare.
För att kringgå denna mekanism inaktiverar många administratörer helt enkelt UAC eller beviljar administratörsrättigheter genom att lägga till ett användarkonto i den lokala gruppen "Administratörer". Naturligtvis är båda metoderna inte säkra. Ingen av dessa metoder rekommenderas för utbredd användning eftersom de minskar Windows-säkerheten. I den här artikeln kommer vi att titta på hur man kör ett program som kräver administratörsbehörigheter som standardanvändare och undertrycker UAC-höjdprompten.
Innehåll:
- Konfigurera behörigheter för icke-adminanvändare att köra ett program
- Tillåt standardanvändare att köra ett program som kräver administratörsbehörighet
- Hur kringgår man UAC med alternativet RunAsInvoker i CMD?
- Aktivera RunAsInvoker Mode i EXE-filmanifestet
- Skapa en genväg för att köra programmet med ett sparat administratörslösenord
Konfigurera behörigheter för icke-adminanvändare att köra ett program
Ett Windows-program kan be dig om administratörsbehörighet när det startar om:
- Programmet behöver komma åt en systemkatalog eller en fil för vilken NTFS-behörigheterna inte har beviljats till icke-privilegierade användare;
- Om programmet kompilerades med en speciell flagga som kräver höjd vid start (
requireAdministrator).
I det första fallet är allt som krävs för att lösa problemet att ge RW eller Full Control användarbehörigheter till programkatalogen eller den nödvändiga systemkatalogen/filen. Till exempel lagrar ett program sina filer (loggar, konfigurationsfiler, etc.) i sin egen mapp iC:Program Files (x86)SomeAppeller någon systemkatalog. Användaren måste ha behörighet att skriva till dessa filer för att programmet ska fungera korrekt. För att det här programmet ska fungera normalt krävs administratörsbehörigheter.
För att programmet ska kunna köras som en icke-adminanvändare räcker det att manuellt ge användaren (eller den inbyggda användargruppen) behörighet att ändra/skriva en fil/katalog på NTFS-filsystemnivå

För att hitta en lista över filer, mappar och registernycklar som programmet har åtkomst till använder duProcessövervakare(https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Aktivera filtret efter namnet på programprocessen och hitta alla resurser, om du försöker komma åt dem visas Access Denied. Ge nödvändiga behörigheter till mappar/filer/registernycklar.


Notera. Egentligen rekommenderas det inte att lagra de ändrade programdata i katalogen C:Program Files. Det är bättre att lagra appdata i användarprofilen. Men det är en fråga om lathet och inkompetens hos apputvecklarna.
Tillåt standardanvändare att köra ett program som kräver administratörsbehörighet
Tidigare beskrev vi hur man inaktiverar en UAC-prompt för ett specifikt program med hjälp avHumaninvokerparameter. Denna metod är dock inte tillräckligt flexibel.
Låt oss titta på ett enklare sätt att tvinga alla program att köras utan administratörsbehörighet (utan att ange administratörslösenordet) och med UAC aktiverat (nivå 4, 3 eller 2 i UAC-reglaget).
Låt oss ta registerredigeraren som ett exempel -Regedit(den finns i mappen C:Windows). Lägg märke till UAC-skölden bredvid appikonen. Den här ikonen betyder att UAC-höjd krävs för att köra denna applikation.
![]()
![]()
När du springerregedit.exe, kommer du att se en kontrolluppmaning för användarkonto som ber om administratörsuppgifterna (Do you want to allow this app to make changes to your device?). Om du inte anger ett lösenord och inte bekräftar höjden kommer appen inte att starta.


Låt oss försöka kringgå UAC-begäran för det här programmet. Skapa textfilenkör-som-icke-admin.batsom innehåller följande kod på ditt skrivbord:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
För att tvinga regedit.exe att köras utan administratörsbehörighet och för att undertrycka UAC-prompten, dra helt enkelt EXE-filen du vill köra till denna BAT-fil på skrivbordet.


Registerredigeraren bör starta utan en UAC-prompt och utan att ange ett administratörslösenord. Om du öppnar Aktivitetshanteraren och lägger tillUpphöjdkolumnen kommer du att se att det finns regedit.exe-processen utan den förhöjda statusen (kör med icke-admin användarbehörigheter).


Försök att redigera valfritt objekt under HKEY_LOCAL_MACHINE-registret. Som du kan se kan en användare inte redigera objektet i denna registernyckel (användaren har inte skrivbehörighet för systemregisternycklarna). Du kan dock lägga till eller redigera registernycklar och parametrar i din användarhive (HKEY_CURRENT_USER).


På samma sätt kan du köra vilken app som helst med hjälp av BAT-filen. Ange bara sökvägen till den körbara filen.
kör-app-som-icke-admin.batSet ApplicationPath="C:Program FilesSomeApptestapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
Du kan också lägga till en snabbmeny som tillåter att alla appar körs utan höjd. För att göra det, skapaRunAsUser.REGfil, kopiera följande kod till den, spara och importera den till Windows-registret genom att dubbelklicka på reg-filen (du behöver administratörsbehörighet för att tillämpa denna ändring).
SLÄKT:Hur man får Windows-administratörsbehörigheter utan lösenord
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT*shellforcerunasinvoker] @="Run as user without UAC privilege elevation" [HKEY_CLASSES_ROOT*shellforcerunasinvokercommand] @="cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" "%1"""


Efter det, för att köra valfri applikation utan administratörsbehörighet, välj bara "Kör som användare utan UAC-privilegiehöjning” från Windows Filutforskarens snabbmeny.
Du kan distribuera det här menyalternativet till alla datorer i domänen genom att importera registerparametrarna med GPO.


Jag skulle vilja påminna dig om att användaRUNASINVOKERläge för programmet tillåter dig inte att höja behörigheterna. RunAsInvoker undertrycker UAC-prompten och talar om för programmet att det ska köras med den aktuella användarens privilegier och inte be om höjning av privilegier. Om ett program verkligen behöver förhöjda privilegier för att redigera systeminställningar eller filer, kommer det inte att fungera eller kommer att be om administratörsbehörigheter igen.
Hur kringgår man UAC med alternativet RunAsInvoker i CMD?
Miljövariabeln __COMPAT_LAYER låter dig ställa in olika kompatibilitetsnivåer för applikationerna (denKompatibilitetfliken i egenskaperna för en EXE-fil). Denna variabel låter dig ange kompatibilitetsinställningarna som du vill köra programmet med. Om du till exempel vill starta en app i Windows 8-kompatibilitetsläge med en upplösning på 640×480 ställer du in följande:
set __COMPAT_LAYER=Win8RTM 640x480


Variabeln __COMPAT_LAYER har några alternativ som vi är intresserade av. Det finns följande parametrar:
- Humaninvoker– kör en app med privilegierna för en överordnad process utan en UAC-prompt;
- Runahögst– kör ett program med den högsta behörigheten som är tillgänglig för användaren (UAC-prompten visas om en användare har administratörsbehörighet);
- RunAsAdmin– kör en app som administratör (UAC-prompten kommer alltid att visas).
Detta betyder att RunAsInvoker-parametern inte ger administratörsbehörighet, den undertrycker bara UAC-prompten.
Följande kommandon aktiverar RunAsInvoker-läget för den aktuella processen och kör det angivna programmet utan höjd:
set __COMPAT_LAYER=RUNASINVOKER
start "" "C:Program FilesMyApptestapp.exe"
Aktivera RunAsInvoker Mode i EXE-filmanifestet
Som nämnts ovan visar Windows UAC-sköldikonen för program som kräver förhöjda behörigheter för att köras. Utvecklare ställer detta krav när de kompilerar applikationen i programmetmanifestera
Du kan redigera manifestet för valfri EXE-fil och inaktivera kravet att köra programmet i förhöjt läge.
Använd gratisResurshackerverktyg för att redigera programmanifestet. Öppna programmets körbara program i Resource Hacker.
I det här exemplet kommer jag att redigera manifestet avAutologon.exeverktyg från Sysinternals, som kan användas för att automatiskt logga in på Windows utan lösenord.
I trädet till vänster, gå tillManifesteraoch öppna programmanifestet. Var uppmärksam på följande XML-avsnitt:
<requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges>
Medkräver administratöralternativet aktiverat, kör Windows alltid detta program med administratörsrättigheter.
Ändra requireAdministrator tillsom Invokeroch spara ändringarna i .exe-filen.

Observera att nu har UAC-skölden försvunnit från programikonen, och du kan köra den som aktuell användare utan att be om administratörslösenordet.
![]()
![]()
Om den körbara appfilen är signerad med en digital signatur (Code Signing-certifikat) kan den sluta fungera eller visa en varning efter att ha ändrat exe-filen.
I det här fallet kan du tvinga programmet att använda en extern manifestfil. Skapa en vanlig textfilappname.exe.manifest(till exempel,Autologon.exe.manifest) i katalogen med exe-filen och kopiera manifestkoden från Resource Hacker till den. Ersätt requireAdministrator medsom Invoker. Spara manifestfilen.
För att få Windows att alltid försöka använda en extern manifestfil när du startar EXE-filer, aktivera en speciell registerparameter:
REG ADD "HKLMSOFTWAREMicrosoftWindowsCurrentVersionSideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f
Starta om Windows och se till att programmet använder en extern manifestfil och körs utan administratörsbehörighet.
Skapa en genväg för att köra programmet med ett sparat administratörslösenord
Om metoderna för att köra ett program medHumaninvokerflaggan inte fungerar för din äldre applikation, kan du försöka köra en sådan app i en användarsession med hjälp av sparade administratörsuppgifter. Detta är det minst säkra sättet att köra program utan att ge användaren lokala administratörsbehörigheter, så vi har medvetet lämnat det sist.
För att öppna programmet, skapa en ny genväg på skrivbordet. Ange datornamnet, det lokala administratörsnamnet och den fullständiga sökvägen till målappens körbara fil.
Till exempel:
runas /user:wks-123root /savecred "C:CorpAppmyapp.exe"


När du kör programmet för första gången kommer det att öppna en kommandotolk där du blir ombedd att ange administratörslösenordet.


Kommandot RunAs, när det körs med/SAVECREDalternativet, sparar användarnamnet och lösenordet i Windows Credentials Manager.
Nästa gång genvägen körs kommer runas-verktyget automatiskt att hämta det sparade lösenordet från Credentials Manager och använda det för att köra appen under det angivna lokala administratörskontot (du kommer inte att bli tillfrågad om lösenordet varje gång du öppnar genvägen).
Följande kommando listar sparade lösenord i Credential Manager:
RunDll32.exe keymgr.dll,KRShowKeyMgr


Ett fel uppstår när en sådan genväg startas i Windows 11:
RUNAS ERROR: Unable to run - C:CorpAppmyapp.exe 740: The requested operation requires elevation.


För att åtgärda detta, ändra kommandot i genvägsegenskaperna. Byt ut den mot:
C:WindowsSystem32runas /profile /user:WKS-123root /savecred "cmd.exe /C C:CorpAppmyapp.exe"


Att använda alternativet /savecred är inte säkert, som vi nämnde ovan. Detta beror på att en användare som har administratörslösenordet sparat i sin profil kan använda det för att köranågraprogram eller kommando med förhöjda behörigheter, eller till och med för att återställa administratörskontots lösenord. Lösenord som lagras i Credential Manager kan också dumpas i vanlig text av verktyg som Mimikatz, så det är bättre att inaktivera användningen av sparade lösenord.
I Windows kan du inaktivera att spara lösenordet i Credential Manager med alternativet GrupprincipNätverksåtkomst: Tillåt inte lagring av lösenord och autentiseringsuppgifter för nätverksautentisering(Datorkonfiguration -> Windows-inställningar -> Säkerhetsinställningar -> Lokala policyer -> Säkerhetsalternativ).
Det finns flera tredjepartsverktyg som låter dig komma runt nackdelen med att använda ett lagrat administratörslösenord i runas. Till exempel,AdmiLink,RunAsRob,RunAsSpc. Dessa appar låter dig lagra det krypterade administratörslösenordet och köra programmet säkert med administratörsbehörighet. Dessa verktyg tillåter inte användaren att köra något program eller kommando med sparade referenser eftersom de kontrollerar sökvägen och kontrollsumman för den körbara filen när den startar.











![[Opera Beta / Developer Update] Opera 118 Developer släppt](https://media.askvg.com/articles/images8/Opera_One_R2_Web_Browser_Main_UI_Screen.png)
