Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: YAcosta en Octubre 18, 2014, 09:59:37 pm
-
Empiezo con el Windows8.1 el cual ni siquiera habia usado. (Ojo, lo estoy probando con Win8.1 64bits)
Instalo mi aplicativo y se instala sin problemas.
Instalado mi base de datos (Firebird) y su ODBC sin problemas.
Ejecuto mi programa y este levanta la ventana de usuarios. Si carga los usuarios es prueba de que esta leyendo la BD. Pongo la contraseña y el programa desaparece sin ningún error.
De momento no tengo a la mano el VB6 para 64bits y veré que instalarlo mas tarde, asi que lo que hago es abrir el Virtual XP donde programa y le pongo una serie de Msgbox para ver donde se cae, genero el ejecutable y lo llevo al Win8.1 y descubro en que linea de código cae y es esta:
MsgBox ("Mensaje5")
memG_MPER_ID = rs!MPER_ID
MsgBox ("Mensaje6")
O sea, el Mensaje6 no sale por tanto cae en la linea: memG_MPER_ID = rs!MPER_ID
memG_MPER_ID es una variable global y a ella le asigno el contenido valido de rs!MPER_ID que es un numero.
¿Porque cae?
-
A carambaaaa, ya cai en cuenta. Es un tema de permisos con Windows.
Si ejecuto el programa como administrador el programa se ejecuta sin problema alguno. Probe grabar, probe abrir el reporte (DataReport), probe mandarlo a imprimir, todo perfecto. Solo me falta un detalle. ¿Como le hago para que el programa siempre se ejecute como Administrador? Creo que alguna vez comentaron sobre esto asi que voy a buscar el post pero porsiaca si algun tiene la respuesta a la mano se lo agradecere.
Conclusion de experiencia propia: Aplicativos en vb6 corre sobre Windows8.1 (creo que ya esto era sabido pero diferente es experimentarlo con tu propio app).
-
Ok, con el Windows10 habrá que esperar puesto que no me deja instalar nada por ser una versión de evaluación. Solo me falta resolver que mi programa funcione con permisos de administrador por defecto
-
Ja. Hoy se me estan haciendo las cosas fáciles, resolver lo de los permisos fue sencillo:
(http://i.snag.gy/ogIOU.jpg)
-
Lo de los permisos lo puedes hacer con un archivo manifest. Busca algún generador de manifest con opciones y listo.
Por casualidad. Que base de datos usas y donde esta ubicada?
-
Aca esta para crear el Generador de Manifest, que bien que ande todo en Win 8.1 va por otro 10 año mas el VB6 jeje
http://www.vbforums.com/showthread.php?606736-VB6-XP-Vista-Win7-Manifest-Creator (http://www.vbforums.com/showthread.php?606736-VB6-XP-Vista-Win7-Manifest-Creator)
Justo se fue la luz aca cuando iva a postear el Link, jeje
-
Lo de los permisos lo puedes hacer con un archivo manifest. Busca algún generador de manifest con opciones y listo.
Por casualidad. Que base de datos usas y donde esta ubicada?
La base de datos es Firebird Forever (presumo que si se puede con Firebird se puede con las grandes) y esta ubicada en el disco C. Las pruebas las hice dentro de una virtualbox. Pero accediendo por IP la puedo tener donde sea, incluso en un servidor linux y todos los terminales WinXP/Win7 y ahora Win8.1.
-
Aca esta para crear el Generador de Manifest, que bien que ande todo en Win 8.1 va por otro 10 año mas el VB6 jeje
¿Donde es aca? te refieres en algún post? y si que paja que el mismo soft que tenemos se pueda seguir revendiendo por varios años mas casi sin problemas
[youtube]VG4t4I_cjMs[/youtube]
-
Ah y lo mas probable es que en la Win10 tambien corra pero habra que esperar para probar pq en la version evaluacion no permite instalar nada.
-
La base de datos es Firebird Forever y esta ubicada en el disco C
Ajá! Ahí está la trampa. Para acceder al disco C tienes que ser administrador. Lo idea sería que este en la carpeta datos de programa.
-
La base de datos es Firebird Forever y esta ubicada en el disco C
Ajá! Ahí está la trampa. Para acceder al disco C tienes que ser administrador. Lo idea sería que este en la carpeta datos de programa.
A caramba, por eso lo decias jeje. No sabia eso doc. De momento lo resolvi indicando al acceso directo que inicie como administrador. Quiere decir que si alojo la BD en donde indicas (no en C:\QueryFull\) ya no seria necesario el truco en el acceso directo. Y ¿Si lo pusiese en D? Lo que pasa es que la maquina virtual la cree con una sola partición. En todo caso ya veo por donde va el chiste. Gracias doc.
-
No necesariamente tiene que ser en una partición. Windows te pide permisos si querés escribir en otro lugar que no sea en tu carpeta de usuario. Si lo pones en otra partición lo podrás escribir y cualquiera se podría llevar una copia :P
-
Aca les dejo un manifest, que solicita los privilegios de Admin al ejecutar la aplicacion
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
processorArchitecture="x86"
version="1.0.0.0"
name="Microsoft.Windows.Regedit" type="win32" />
<description>Registry Editor</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
-
No necesariamente tiene que ser en una partición. Windows te pide permisos si querés escribir en otro lugar que no sea en tu carpeta de usuario. Si lo pones en otra partición lo podrás escribir y cualquiera se podría llevar una copia :P
Ah ok, ahora si me quedo claro. Gracias doc
-
Aca les dejo un manifest, que solicita los privilegios de Admin al ejecutar la aplicacion
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
processorArchitecture="x86"
version="1.0.0.0"
name="Microsoft.Windows.Regedit" type="win32" />
<description>Registry Editor</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
processorArchitecture="x86"
/>
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Gracias Waldo. Voy a probarlo. Saludos