2010-07-05 23 views
5

Tengo una aplicación VB6 que he estado vendiendo durante más de 12 años. A veces tengo usuarios que tienen dificultades para ejecutar la aplicación. Las escrituras de datos se dirigen a/Mis documentos, de modo que nada más que los archivos de instalación (EXE, etc.) van a C: \ Archivos de programa (o C: \ Archivos de programa (x86)).¿Prevenir la virtualización de UAC?

La solución a su problema es iniciar la aplicación, aunque parece estar colgada, mostrar el administrador de tareas, ver los procesos, hacer clic derecho en el proceso de mi aplicación y desmarcar la virtualización de UAC. Luego les pido que reparen la instalación y todo está bien.

¿Por qué se somete mi proceso a la virtualización de UAC y cómo evito que esto ocurra? También uso InstallShield 2010 Professional para crear la instalación, no estoy seguro si está relacionado con el instalador o la aplicación en sí.

Respuesta

9

Para evitar la virtualización, agregue un manifiesto a la aplicación. Ya sea que diga comoInvoker o requieraAdministrator, ya no obtendrá la virtualización. Supongo que como Invictor será mejor para ti ya que la aplicación funciona bien sin elevarla.

Puede poner foo.exe.manifest en la misma carpeta que el exe, o incrustarlo, que tiene algunas cosas complicadas como hacer que el manifiesto sea un múltiplo de 4 bytes de longitud. This question cubre algunos detalles sangrientos de incrustación.

+0

Gracias por la información. ¿Algún enlace a cómo crear este manifiesto? – Neal

+1

En su forma más simple, es solo un archivo de XML llamado yourexename.exe.manifest y puesto en la misma carpeta que yourexename.exe. Para ver un ejemplo del contenido, vea http://csi-windows.com/toolkit/manifest-template, entre otros. La parte 'requestedPrivileges' es el aspecto importante. –