Tengo una función de actualización en mi aplicación: descarga y verifica el instalador (un setup.exe, creado con NSIS). Para poner en realidad fuera de la actualización, he sido simplemente haciendo:QProcess :: startDetached bloqueado por UAC (ejecuta un actualizador)
QString path = .. absolute path to the downloaded file ...
QProcess::startDetached(path, QStringList());
Esto funciona bien en XP - pero en Vista y Win7, nada sucede una vez que se complete la descarga. Si busco la actualización descargada y la ejecuto manualmente, funciona bien. Supongo que lo que está sucediendo es que UAC está bloqueando el instalador en CreateProcess time, pero aquí es donde se me acaba el conocimiento.
Complicación adicional: cuando ejecuto una compilación de depuración desde la línea de comandos, los pasos anteriores funcionan, recibo el aviso de UAC y puedo ejecutar el instalador. Son las compilaciones de lanzamiento, iniciadas desde el menú de inicio/acceso directo, que tienen el problema: supongo que hay una diferencia en el token de autenticación cuando se ejecuta desde un shell de comandos.
El uso del verbo runas se _force_ elevación de UAC, si no se especifica un verbo , ShellExecute lo resolverá solo ... – Anders
Correcto, gracias por la información adicional. – ismail