| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 06 May, 2008 11:47 am Asunto: Problemas con Windows Vista |
|
|
Hola a todos,
Que tal os van los programas con Vista? yo tengo algunos problemas y la unica manera de solucionarlos es poniendo que se ejecute como "Administrador" o desactivando el "Control de cuentas de Usuario" hay alguna forma de que todo vaya bien sin obligar al usuario a hacer nada?
Quizas es porque uso una version antigua del InstallShield?
La verdad es que es un coñazo, tener que decirles a los usuarios que hagan cambios y me gustaria buscar la forma que desde la misma instalacion se haga lo necesario para que no tengan que tocar nada.
Se os ocurre algo?
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 07 May, 2008 3:01 am Asunto: |
|
|
Esto es inherente en vista, no hay forma de quitarlo _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Cri_sys Master


Registrado: 13 Feb 2004Mensajes: 198Ubicación: Maringá, Brazil
|
Publicado: Mie 07 May, 2008 12:36 pm Asunto: |
|
|
Eso hasta ocurre en WIndows NT _________________ Read what I mean, not what I write! |
|
| Volver arriba |
|
 |
frios Lt

Registrado: 20 Nov 2005Mensajes: 79Ubicación: España
|
Publicado: Sab 10 May, 2008 11:28 am Asunto: |
|
|
Crea con un archivo de texto que puedes llamar por ejemplo vista.rc y añadele el siguiente código.
| Código: | #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define RT_MANIFEST 24
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST LOADONCALL MOVEABLE
{
"<xml> "
"<assembly> "
"<trustInfo>"
"<security>"
"<requestedPrivileges>"
"<requestedExecutionLevel>"
"</requestedPrivileges>"
"</security>"
"</trustInfo>"
"</assembly> "
} |
añadelo a tu proyecto y compila.
En principio lo que haces es un manifest que le dice a vista que el programa se debe ejecutar en modo administrador.
Debería quitarte los problemas de ejecución en vista. |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Sab 10 May, 2008 7:37 pm Asunto: |
|
|
| Cita: |
System Error Code 14001
Error al inicial la aplicacion; la configuracion en paralelo noes correcta. |
Ejecuta en mi maquiasn con windows vista basic, compilado r con c++ builder 6 _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
frios Lt

Registrado: 20 Nov 2005Mensajes: 79Ubicación: España
|
Publicado: Dom 11 May, 2008 12:03 pm Asunto: |
|
|
Perdón, pero me he dado cuenta de que se me había comido la mitad del código al escribirlo, supongo que al estar activado el html
| Código: |
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define RT_MANIFEST 24
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST LOADONCALL MOVEABLE
{
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> "
"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\"> "
"<trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v3\">"
"<security>"
"<requestedPrivileges>"
"<requestedExecutionLevel level=\"requireAdministrator\" uiAccess=\"true\" />"
"</requestedPrivileges>"
"</security>"
"</trustInfo>"
"</assembly> "
} |
|
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Dom 11 May, 2008 6:01 pm Asunto: |
|
|
No funciono, dice qeu ??? Necesita elevacion ???? _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
frios Lt

Registrado: 20 Nov 2005Mensajes: 79Ubicación: España
|
Publicado: Lun 12 May, 2008 3:43 pm Asunto: |
|
|
No se si te entiendo bien, ¿te da error? o te pregunta si necesita elevar a privilegios de administrador al arrancar el programa.
Si es lo segundo, va bien, es como debe ir, hay que tener en cuenta que el UAC siempre va a preguntarnos si le damos permiso para ejecutar la aplicación en modo administrador.
La diferencia de poner el manifest es que si no está, en lugar de preguntarnos si lo ejecuta en modo administrador, lo intenta ejecutar como usuario, y claro, provoca un error donde el programa necesite mas privilegios, como por ejemplo escribir en el registro de windows.
Si vas a certificar tu aplicación con Microsoft necesitas obligatoriamente el manifest, si necesitas privilegios claro, no sirve decir que se debe ejecutar como administrador.
Para saber si tu aplicación necesita privilegios tienes una aplicación de Microsoft que te la testea
http://go.microsoft.com/fwlink/?LinkId=52529
Si es un error prueba a añadir esta linea
| Código: | "<assemblyIdentity version=\"1.0.0.0\" processorArchitecture=\"X86\" name=\"nombre_aplicacion\" type=\"win32\"/>" |
deberías ponerla encima del trustInfo, aunque no se si eso es importante.
De todas forma te diré que aunque estuve investigando el tema, ya que mi aplicación necesita de permisos, todavía no lo he probado, y quizás se tenga que realizar algún cambio, ya que toda la información la saqué de c# y la adapté a Borland c++, asi que ... espero que tenagas suerte. |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Lun 08 Mar, 2010 3:52 pm Asunto: |
|
|
| Touchsoftwares escribió: | | No funciono, dice qeu ??? Necesita elevacion ???? |
Conseguiste arreglarlo?
Me da el mismo mensaje que a ti y no doy con la solucion.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 08 Mar, 2010 4:22 pm Asunto: |
|
|
Si a lo que te refieres es a que necesitas que tu aplicación se ejecute como administrador.. Añade a tu proyecto el archivo .RC que encontraras en el siguiente post para que el programa solicite permisos de administrador:
https://cppbuilder.es/viewtopic.php?p=40355#40355 |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Lun 08 Mar, 2010 4:37 pm Asunto: |
|
|
Leo,
Si, lo que pasa es que al añadir el .RC y al ejecutar el programa me da el mismo mensaje que le daba a Gabriel, lo de "Necesita elevación"
Tengo windows 7 y builder 6, no se si tiene algo que ver.
Y ya puestos tengo otro problemilla, creo que esto también lo hiciste tu, he puesto la función "RunOnStartup" que funciona perfectamente, pero lo que me pasa es que no encuentro la forma de decirle la "carpeta de trabajo" lo inicia perfectamente pero no en su carpeta, es como un acceso directo que no tiene carpeta de trabajo y claro no me ve los datos, hay alguna forma de indicarselo a "RunOnStartup"?
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 08 Mar, 2010 5:07 pm Asunto: |
|
|
Te sale un dialogo preguntándote si permites la elevación ? si es así es normal, ese RC lo que provoca es que te pregunte, sin el RC simplemente no te pregunta y se ejecuta sin los privilegios de administrador.
"RunOnStartup" está en el mismo enlace que he puesto antes. Si la carpeta de datos la tienes en alguna carpeta no permitida para datos es mejor que la muevas a otro sitio. En Windows Vista y 7 la carpeta "Archivos de programa" por ejemplo, no está pensada para guardar datos, y si quisieras hacerlo tendrías que modificar los permisos (botón derecho, pestaña seguridad).
"RunOnStartup" lo que hace es imitar el funcionamiento del arranque de las versiones anteriores a Vista, que permiten arrancar en el inicio cualquier aplicación aunque necesiten privilegios de administrador. Por tanto al imitar el funcionamiento anterior que no permitía especificar una carpeta de trabajo en este lugar, si lo modificamos ya deja de tener el sentido por el que se creó..
De todas formas en el enlace tienes el código fuente y puedes modificarlo si lo necesitas. Aunque se creó para no tener que modificar los programas antiguos. Si creas un nuevo programa lo mejor es que busques en la web de Microsoft la forma recomendada de hacer esto en las nuevas versiones y que también servirá en las anteriores.
Luchar contra la forma de funcionar de los nuevos Windows solo te dará más dolores de cabeza, lo mejor es buscar en la web de Microsoft los requisitos que debe tener el programa para estas nuevas versiones.. |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Lun 08 Mar, 2010 5:26 pm Asunto: |
|
|
| _Leo escribió: | Te sale un dialogo preguntándote si permites la elevación ? si es así es normal, ese RC lo que provoca es que te pregunte, sin el RC simplemente no te pregunta y se ejecuta sin los privilegios de administrador.
"RunOnStartup" está en el mismo enlace que he puesto antes. Si la carpeta de datos la tienes en alguna carpeta no permitida para datos es mejor que la muevas a otro sitio. En Windows Vista y 7 la carpeta "Archivos de programa" por ejemplo, no está pensada para guardar datos, y si quisieras hacerlo tendrías que modificar los permisos (botón derecho, pestaña seguridad).
"RunOnStartup" lo que hace es imitar el funcionamiento del arranque de las versiones anteriores a Vista, que permiten arrancar en el inicio cualquier aplicación aunque necesiten privilegios de administrador. Por tanto al imitar el funcionamiento anterior que no permitía especificar una carpeta de trabajo en este lugar, si lo modificamos ya deja de tener el sentido por el que se creó..
De todas formas en el enlace tienes el código fuente y puedes modificarlo si lo necesitas. Aunque se creó para no tener que modificar los programas antiguos. Si creas un nuevo programa lo mejor es que busques en la web de Microsoft la forma recomendada de hacer esto en las nuevas versiones y que también servirá en las anteriores.
Luchar contra la forma de funcionar de los nuevos Windows solo te dará más dolores de cabeza, lo mejor es buscar en la web de Microsoft los requisitos que debe tener el programa para estas nuevas versiones.. |
Leo,
En cuanto a "RunOnStartup" no es eso exactamente a lo que me refiero, por ejemplo, yo tengo instalado el programa en:
c:\swsos\swsos.exe
Cuando se ejecuta tengo un .ini y algunas cosas más que mira en su misma carpeta y como se ejecuta desde c:\swsos no hay problema, pero cuando ejecuto el "RunOnStartup" el problema es que la carpeta de trabajo es:
c:\documents and settings\user
Y logicamente al no iniciarse en c:\swsos todos los ficheros a los que tiene que acceder no los encuentra, por eso te decia si hay alguna forma de al iniciarlo decirle cual es su carpeta de trabajo.
En este caso es un windows XP.
Si intento ejecutar "RunOnStartup" en un windows 7 me dice "Acceso denegado" con lo que no puedo poner el programa para que se ejecute al inicio.
En cuanto a lo de la "elevación" no es un cuadro de dialogo con una pregunta, lo da como un error y no me deja ejecutar el programa.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 08 Mar, 2010 5:43 pm Asunto: |
|
|
| Carlos J. Fernandez escribió: | Y logicamente al no iniciarse en c:\swsos todos los ficheros a los que tiene que acceder no los encuentra, por eso te decia si hay alguna forma de al iniciarlo decirle cual es su carpeta de trabajo.
En este caso es un windows XP |
En XP y anteriores en este lugar de arranque no se puede especificar una carpeta de trabajo, por eso pensé que lo usabas en Vista/7, ya que esta rutina imita el funcionamiento de XP y anteriores en estas versiones. En Vista/7 si se podría, pero claro esta rutina ya tendría un funcionamiento diferente. Si te fijas en el código fuente de la rutina veras que para XP ya anteriores no hace nada especial, simplemente crea una entrada en el registro en el lugar correspondiente, donde si hace algo más especial es en Vista/7 que usa el programador de tareas para imitar el funcionamiento de XP y poder poner un programa que use privilegios de administrador en el arranque.
Esa rutina debería utilizarse como solución provisional o para proyectos viejos que no queramos modificar mucho. Para nuevos proyectos lo mejor es adaptarse a los requisitos de las nuevas versiones y que también son compatibles con las anteriores. En la web de Microsoft puedes encontrar las formas en que se recomienda hacer estas cosas, no recuerdo el enlace en este momento.. pero resumiendo viene a decir que se debería separar el código que requiera privilegios de administrador del que no, y tratar de no poner en el arranque nada que requiera privilegios de administrador y si fuese necesario pues utilizar un servicio.. etc.
Puedes hacer que tu programa use como directorio por defecto el de tu ejecutable poniendo lo siguiente en el constructor del form principal:
| Código: | ChDir(ExtractFilePath(Application->ExeName)); |
| Carlos J. Fernandez escribió: | | Si intento ejecutar "RunOnStartup" en un windows 7 me dice "Acceso denegado" con lo que no puedo poner el programa para que se ejecute al inicio. |
¿Estas usando el RC que se nombra más arriba o el que te he puesto en el enlace? Fíjate que lo hayas añadido a tu proyecto correctamente..
| Carlos J. Fernandez escribió: | | En cuanto a lo de la "elevación" no es un cuadro de dialogo con una pregunta, lo da como un error y no me deja ejecutar el programa. |
Cuando ejecutas tu programa con el botón derecho y seleccionando "ejecutar como administrador" te pone acceso denegado también ? El .RC lo que hace es que se ejecute igual que haciendo esto último manualmente..
Si cuando le das al botón derecho y lo ejecutas como administrador también te da el mismo error entonces el problema se puede deber a que utilizas alguna función especial que requiere habilitar otros privilegios, habría que ver cuál es. |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Lun 08 Mar, 2010 6:06 pm Asunto: |
|
|
Leo,
En cuanto a lo de la carpeta de trabajo PERFECTO eres una maquina, funciona muy bien al decirle:
ChDir(ExtractFilePath(Application->ExeName));
He probado también lo de "RunOnStartup" ejecutando en modo administrador y lo hace perfecto.
Poniendo el .RC me pasa lo siguiente, (windows 7) desde el compilador directamente se bloquea el compilador, el programa y todo, pero sin el compilador, osea ejecutándolo directamente me sale la ventanita de si quiero ejecutar el programa en modo administrador, esa ventana hay forma de quitarla?
Y por que se me bloquea todo desde el compilador? lo logico es que sacara también la ventanita de si quiero ejecutar como administrador no?
Desde windows xp al ejecutar el programa directamente va perfecto, no pregunta nada y no hace nada, imagino que es lo normal por que lo del .RC es solo para vista y 7 segun os he entendido.
Un abrazo.
Carlos |
|
| Volver arriba |
|
 |
|