Oggi sono incappato in uno degli arcani controlli che fa l'UAC di Windows Vista. Chi è l'UAC di Vista? E' lo User Access Control che, tradotto in italiano, corrisponde al Controllo dell'Account Utente.
Il misterioso controllo che ci ha impediva di far eseguire un nostro eseguibile in modalità standard, senza bisogno di effettuare una escalation ad un utente amministratore, è il fatto che il nome del file eseguibile contiene la parola 'Update'. Chiamatelo 'PippoUpdate.exe' o chiamatelo 'UpdateSoMama.exe' e non funziona. O meglio: quando lo lanciate, il sistema vi chiederà di autorizzare il lancio dell'eseguibile classificato come 'non identificato'.
Se invece il file eseguibile non contiene la parolina magica 'update', allora tutto fila liscio e non vi chiede nulla. Ovviamente esiste la possibilità di lanciarlo senza la richiesta di autorizzazioni, se iniettate al file un altro file manifest, in cui in sostanza gli si dice di bypassare i controlli standard di Microsoft Vista.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="2.3.0.0" processorArchitecture="X86" name="ConcreteUpdate.exe" type="win32" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" /> </requestedPrivileges> </security> </trustInfo> </assembly>
Altri sfortunati sviluppatori come il sottoscritto li trovate in questo thread sul Microsoft MSDN Forum, dove di fatto ho trovato la soluzione:
The word Update in filename breaks program - MSDN Forums
|