Evitare il controllo dell’account utente ma avviare un processo elevato utilizzando un servizio Windows

Ho un servizio non interattivo in esecuzione come utente privilegiato SYSTEM su macchine Windows, e ho bisogno di avviare un determinato eseguibile come processo elevato.

Sono riuscito a avviare un processo figlio come SYSTEM, usando WTSGetActiveConsoleSessionId (), trovando un processo di sistema e duplicando il suo token. Allo stesso modo, posso avviare un processo non elevato come utente normale. Ma ho bisogno di avviare il processo come utente normale, ma con privilegi elevati, in modo che non debba mostrare UAC, ma il processo è in esecuzione come utente appropriato.

Non sto cercando di aggirare l’UAC, poiché l’utente ha già accettato di installare il servizio. Sto cercando di mitigare un inconveniente. Ho trovato una domanda simile, senza risposta , ma ho chiesto di nuovo nella speranza di ottenere una risposta.

Se si dispone di un token filtrato per l’utente interattivo, ad esempio recuperato tramite WTSQueryUserToken () , è ansible recuperare il token non filtrato (“elevato”) utilizzando la funzione GetTokenInformation con l’opzione TokenLinkedToken.