Per assicurarsi che il programma di installazione è in esecuzione come amministratore di solito vi consiglio questo piccolo esempio:
Outfile RequireAdmin.exe
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
!include LogicLib.nsh
Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
Page InstFile
Section
SectionEnd
l'applicazione installata deve eseguire una procedura simile se deve sempre essere eseguito come amministratore, per un'applicazione Win32 che sarebbe :
Se per "automaticamente viene eseguito come amministratore" si intende bypassare il controllo account utente, allora no che non è davvero possibile, l'intero punto di UAC è quello di permettere all'utente di confermare/negare operazioni privilegiate! Alcune applicazioni aggirano questo problema installando un servizio NT che esegue qualsiasi operazione richiesta per conto dell'applicazione. Non lo consiglierei perché riempie la macchina degli utenti con i servizi e potrebbe indebolire la sicurezza del sistema se il servizio non è codificato correttamente.
Se non hai scritto l'applicazione che stai installando, le tue opzioni sono un po 'più limitate. Se l'applicazione non dispone di un manifest, è possibile utilizzare un manifest external (myapp.exe.manifest
) manifest.
L'impostazione della stringa RUNASADMIN sotto la chiave AppCompatFlags non è qualcosa che l'installatore dovrebbe fare, quelle opzioni di compatibilità dovrebbero essere controllate dall'utente, non dalle applicazioni.
Il thread del forum si è collegato a dire anche di twoways per impostare il flag SLDF_RUNAS_USER
su un collegamento, questo non farà in modo che l'applicazione viene avviata come admin in tutte le situazioni, solo quando l'applicazione viene avviata dal collegamento ma potrebbe essere la tua unica opzione se non riesci a cambiare l'applicazione ...
Grazie per il tuo tempo. Davvero una buona risposta ... – MoonKnight
Davvero brillante! – MoonKnight