2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128

Forzare un programma ad eseguire *senza* privilegi di amministratore o UAC?

C'è un modo per forzare un programma che normalmente richiede privilegi di amministratore (via UAC) ad eseguire senza di essi? (cioè: nessun prompt UAC e ** nessun accesso a livello di sistema**.)

Aggiunto: senza modificare l'eseguibile stesso.


Nonostante la risposta di James, ho trovato alcuni modi in cui può quasi essere fatto:

  1. Modificando l'eseguibile posso rimuovere la voce trustInfo dal manifesto (o il manifesto interamente, in modo da poterne utilizzare uno esterno), permettendo al programma di partire senza UAC. Sfortunatamente questo modifica l'eseguibile, quindi esce poco dopo a causa di un test di checksum interno.
  2. 3. Utilizzando Process Explorer posso lanciarlo come Utente Limitato. Tuttavia questo sembra limitarlo molto di più di quanto vorrei (funziona come Protected Mode IE e quindi può accedere a molto meno di quanto possa fare il mio utente standard non abilitato).

Risposte (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Salvare questo testo in <name_of_file>.reg e aggiungerlo al registro di Windows. (Fare doppio clic su di esso dovrebbe fare il trucco.)

In seguito, fare clic con il tasto destro del mouse sull'applicazione che si desidera eseguire senza privilegi amministrativi e selezionare “Esegui senza elevazione dei privilegi”.

In alcuni casi - piccola quantità 0,1% dei programmi può chiedere due volte circa UAC prompt.

57
57
57
2015-10-02 11:27:02 +0000

Salva su nonadmin.bat:

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


Ora è possibile trascinare e rilasciare i programmi su questo per eseguirli senza admin. 


Questo non richiede privilegi di amministratore come la modifica della chiave del Registro di sistema. Inoltre non ingombra il menu contestuale. 


Basato sulla risposta di Vom [ risposta ](https://superuser.com/a/450503/221549) 


* * * * 


**Aggiornamento:** Ora dovrebbe funzionare anche con programmi che hanno spazi anche nel nome.
35
35
35
2012-01-05 08:15:03 +0000

Spero di non essere arrivato troppo tardi alla festa, ma stavo cercando una domanda simile e senza vedere una risposta ho scoperto che il comando RunAs di Windows, quando viene eseguito come amministratore, può farlo con lo switch /trustlevel.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
                  in /showtrustlevels.
``` &001 


Questo ha funzionato nel mio caso. Ironia della sorte, l'avvio di un programma esplicitamente senza elevazione ** richiede un prompt di comando elevato**. Vai figura. :) Spero che vi aiuti.
19
19
19
2016-09-09 20:16:13 +0000

Se si dispone di una particolare applicazione che si desidera eseguire sempre senza UAC, è possibile indirizzarla con il Registro di sistema (aggiungere il testo ad un file REG e importarlo nel Registro di sistema):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

A differenza di questa risposta , questa soluzione non richiede alcun click alternativo o modifica all'interazione dell'utente.

Microsoft chiama questo processo aggiungendo il RunAsInvoker “Compatibility Shim” .

4
4
4
2019-01-25 11:54:23 +0000

Se si tratta di un file di setup (installazione) exe che richiede privilegi di amministrazione, c'è un trucco per eseguirlo senza accesso elevato:

Se il nome del file contiene parole come setup o install windows lo esegue con forza con accesso elevato anche se non necessita di accesso elevato:

Se il file . exe ha un manifesto, queste euristiche per l'elevazione non si applicano.

Per esempio se il manifesto indica che l'exe non ha bisogno di elevazione, anche includendo una qualsiasi di queste parole nel nome del file non lo farà funzionare come elevato.

Un'altra parola chiave è patch come dichiarato da Mgamerz nei commenti.

Questo è documentato nei documenti UAC (User Account Control):

Il rilevamento dell'installatore rileva i file di configurazione, il che aiuta ad evitare che le installazioni vengano eseguite a insaputa dell'utente e senza il suo consenso.

Il rilevamento dell'installatore si applica solo a:

  • File eseguibili a 32 bit.

  • Applicazioni senza un attributo del livello di esecuzione richiesto.

  • Processi interattivi in esecuzione come utente standard con UAC abilitato.

  • Prima di creare un processo a 32 bit, vengono controllati i seguenti attributi per determinare se si tratta di un installatore:

  • Il nome del file include parole chiave come “installare”, “setup” o “aggiornare”.

Modo lettura qui: https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

3
3
3
2011-05-18 01:05:06 +0000

Ho risolto questo problema oggi usando il toolkit di personalizzazione dell'applicazione MS.

Ho seguito le istruzioni in un articolo della repubblica tecnologica .

Fondamentalmente:

1) si ottiene il toolkit da MS qui .

2) Fare clic su Fix

3) Scegliere l'opzione RunAsInvoker

4) Fare clic con il tasto destro del mouse sul fix e scegliere Install

2
2
2
2013-07-21 02:56:41 +0000

Mentre nella sua domanda Andrew ha affermato che quanto segue non ha funzionato:

Modificando l'eseguibile posso rimuovere la voce trustInfo dal manifesto (o il manifesto interamente, in modo da poterne utilizzare uno esterno), permettendo al programma di partire senza UAC. Purtroppo questo modifica l'eseguibile, quindi esce poco dopo a causa di un test di checksum interno.

Sono stato in grado di modificare un file .manifesto esterno per il software che stavo usando e cambiare

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

in

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

. Grazie!

-2
-2
-2
2012-04-20 04:28:43 +0000

Ho risolto questo problema andando a cambiare i permessi sulla cartella che conteneva il programma.

Ho aggiunto ogni utente che eseguirà quel programma e ho dato loro privilegi di “controllo completo”. Questo ha risolto il problema e ho lasciato il “run as admin” deselezionato.

Non ho alcun problema di sicurezza per gli utenti che eseguiranno il programma.

-5
-5
-5
2010-08-04 14:09:46 +0000

No, se un programma richiede l'UAC allora sta cercando di accedere a qualcosa al di fuori della sua sandbox. Il programma non funzionerà correttamente senza l'accesso rialzato.

Se si vuole solo eliminare la notifica, è possibile disattivare UAC.

Disattivare UAC su Windows Vista: Avvio, digitare “utente”. Cliccare su “Account utente”. Nella finestra che si apre, cliccare su “User Account Control Settings” e poi disattivare UAC.

Disabilitare UAC su Windows 7: Start, digitare “user”. Cliccare su “User Account Control Settings”. Trascinare la barra di scelta fino in fondo a “Never Notify”.