Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: YAcosta en Septiembre 04, 2013, 03:07:08 pm
-
Estoy en Windows 7 (todas las pcs de esta red esta en W7)
Como puedo resolver este error?. Ya he detectado que el error ocurre por un tema de privilegios (ya me confundí si la igualdad "permisos = privilegios" es correcta), bueno, uno de los controles de mi aplicativo accede a una carpeta compartida para cargar una foto y al acceder me da error 52.
Ya fui a la PC a la que accedo y di los permisos totales a esa carpeta y el error sigue. La solución momentánea fue poner On Error Resume Next porque solo me salteo el problema de no mostrar una foto asi que no hay daño grave pero no es una buena solución, es solo momentaneo.
Lei por alli que esto se resuelve instalando en todos los terminales donde de el error 52 el Visual Basic 6, esto no lo habia hecho porque pensé que con el instalador del aplicativo era suficiente ya que he instalado de igual forma en otras redes bajo las mismas condiciones (W7/64) y no me presenta este error, lo hare en la tarde. Instalando el Visual Basic 6 completo estaré "tapando" o parchando el problema. Pero la verdad quisiera saber cual seria la mejor solución o saber a ciencia cierta porque me arroja ese error.
Saludos
-
Y si ejecutas el EXE como Administrador con click derecho Ejecutar como....
-
Y si ejecutas el EXE como Administrador con click derecho Ejecutar como....
¿Y como se podría hacer eso de forma predeterminada? Es decir, en las pcs clientes solo tengo accesos directos, en la realidad sabemos que el usuario no dara click derecho y ejecutara como administrador, ellos haran doble click como siempre ¿como poder hacer en Windows 7 para que el aplicativo siempre se ejecute como administrador? Voy a ir averiguando esto y ojala esa fuera la solución que en un par de horas confirmare.
Debo agregar que en todas las pc ya les baje el UAC y de las 3 redes con W7 solo en una de ellas me esta pasando esto.
-
Ok, encontre que con esto se puede hacer
(http://www.conecta-pc.es/images/stories/ejecutar-siempre-administrador-2.jpg)
Pero esto hay que hacerlo al aplicativo que esta en el servidor, espero que tenga efecto en los accesos directos de las PCs terminales.
-
Consulta, como administrador no te da error o seguis con el problema igual?
-
Aun no lo checo, estoy saliendo ya mismo al cliente y llego en hora y media, desde alli podre escribir los resultados.
Adelanto y aclaro el panorama
Hay 3 tiendas, todas las PCs de las 3 tiendas con windows 7/64, las 3 usan exactamente el mismo programa, las 3 les baje el UAC, las 3 con el mismo antivirus, practicamente son clones (rutas, grupos de trabajo, etc), en cada una de las tiendas estoy haciendo lo mismo que siempre hice en XP: poner el aplicativo en la PC que funca de servidor y en las estaciones solo accesos directos.
Ahora, SOLO en una de las tiendas que cuenta con 2 estaciones es donde se genera el error (solo en las estaciones no en el server), en las otras dos tienda la ejecucion es normal sin ejecutarlo como administrador, doble clic y ya.
¿porque me arroja error siendo el mismo SO, mismo aplicativo, mismas rutas, etc etc? y solo se me ocurre que algo o alguien movio algo.
Les cuento en un par de horas como anduvo.
-
Consulta, como administrador no te da error o seguis con el problema igual?
Ok, ahora si puedo responder. Ya puse como administrador y el problema sigue. Asi que me veo obligado a instalar todo el Vb6 y cruzar los dedos pq eso funcione. :-)
-
ok, instale el Vb6 y Sp6 para 64bits y no resulto quiza porque cruce los dedos y soy ateo.
Asi que me metere al codigo a examinar el chiste.
-
Necesariamente acceso directos en las otras PC?
Proba ejecutandolas en esos pc's secundarios...
-
Si, el mismp problema pasa si uso el aplicativo en el terminal (no acceso directo) e igual se cae.
Ahora tengo problema con el VB6. Es decir ya lo instale todo exactamente como en las otras tiendas (VB6, SP6 e incluso la licencia del DataReport) y cuando levanto el codigo fuente me sale que no esta registrado el Mscomctl.ocx
Estoy queriendo registrarlo pero no levanta.... llame al amigo que instalo los SO y me dijo que todas las 8 pcs las instalo con el mismo disco.
Comento que el domingo ultimo este amigo instalo W7/64 a todas las 8 pcs (3 tiendas), y luego yo instale mi soft y solo en una tienda me sale este problema.
-
Agrego un pequeño detalle. El acceso directo no esta reconocible desde el escritorio:
(http://i.snag.gy/2nUss.jpg)
Esto solo en estas pcs del problema, quiza sirva ese dato. Ya probe con rehacer el acceso directo.
-
Viste en tadas la maquinas si esta configurado la red de esta forma:
(http://snag.gy/l2Hwc.jpg)
yo tambien tube mas o menos similar a ese problema y resulta que estaba como esto:
(http://snag.gy/ezH4O.jpg)
Tambien cuando compartis la carpeta tiene que estar asi:
(http://snag.gy/akdAX.jpg)
-
Si enter, esta igual ambas ventanas. Le seguiré dando vueltas.
-
Aunque no consigo acceder a esa ultima ventana que muestras.
La carpeta que comparto se llama Imagenes
(http://i.snag.gy/BdKLG.jpg)
-
Y cuando comparto no se activa el boton compartir dejandome habilitado solo la opcion de Compartir Avanzado.
(http://i.snag.gy/64IwT.jpg)
-
Estimado Yvan...!
Tengo ya un poco de trabajo recorrido con varios clientes mios los cuales usan WIN7 64Bit... Perdonen lo que escribire acá, pero es la mierda más dolorosa que en mi vida me he encontrado, te tira unos malditos errores que son inesperados, y opte por hacerme una copia de WIN7 32Bit, respaldar donde tocaba, e instalar mi App..! VOALA, me tardaba más pero mi rostro de satisfacción matando al maldito de 64 Bit, no tiene precio...! Jaja...! Por lo cual te recomiendo comiences a usar 32Bit, copialo en un DVD y te encargas de instalarlos en tus clientes de 64Bit..!
-
Mira yo tengo tambien un cliente con 3 pc todos con win7 64. Tambien tube el mismo problema que no podia mostrar las fotos de mi articulo por que me daba ese error 52. El error 52 da por que no encuentra el archivo. Y para compartir las carpetas yo hago de esta forma.
(http://snag.gy/F0eBT.jpg)
Después de esto te salta una ventana y ahi en el combo hay que elegir Todos y darle clic al boton Agregar, despues cuando agregas Todos darle nivel de permiso Lectura y Escritura.
(http://snag.gy/fPVUR.jpg)
Tiene que quedar asi.
(http://snag.gy/tCRql.jpg)
Despues compartir y listo.
Saludos ojala te sirva amigo.
-
Click Derecho al Icono del Acceso directo o al ejecutable.
Propiedades
Propiedades Avanzadas
Marcas Iniciar como Administrador
Aceptar
Aceptar
Y Listo
-
Estimado Yvan...!
Tengo ya un poco de trabajo recorrido con varios clientes mios los cuales usan WIN7 64Bit... Perdonen lo que escribire acá, pero es la mierda más dolorosa que en mi vida me he encontrado, te tira unos malditos errores que son inesperados, y opte por hacerme una copia de WIN7 32Bit, respaldar donde tocaba, e instalar mi App..! VOALA, me tardaba más pero mi rostro de satisfacción matando al maldito de 64 Bit, no tiene precio...! Jaja...! Por lo cual te recomiendo comiences a usar 32Bit, copialo en un DVD y te encargas de instalarlos en tus clientes de 64Bit..!
Hola Miguel, lamentablemente no puedo aplicar esa solución, en algun momento tuve la oportunidad de exigir que pongan 32bits pero no lo hice porque hace dos años instale mi sistema en un Seven/64 y hasta hoy sin problemas, solo que esa vez todos los terminales son XP. y por esa razón no insisti, no esperaba tener mas sorpresas , hoy ya no puedo exigir que cambien a Win32 las 8pcs porque ya estan usándolas en otras tareas, tampoco puedo hacer el cambio en la tienda del problema porque la pregunta natural seria ¿Como puede funcionar tu mismo programa perfectamente en 2 tiendas y no en 1?
Ni modo papa, debo seguir insistiendo, sino fuera que mi mismo programa si funciona ok en 2 tiendas no insistiria tanto. Hoy mismo en la tarde estoy retomando al tema.
-
Mira yo tengo tambien un cliente con 3 pc todos con win7 64. Tambien tube el mismo problema que no podia mostrar las fotos de mi articulo por que me daba ese error 52. El error 52 da por que no encuentra el archivo. Y para compartir las carpetas yo hago de esta forma.
Después de esto te salta una ventana y ahi en el combo hay que elegir Todos y darle clic al boton Agregar, despues cuando agregas Todos darle nivel de permiso Lectura y Escritura.
Tiene que quedar asi.
(http://snag.gy/tCRql.jpg)
Despues compartir y listo.
Saludos ojala te sirva amigo.
Gracias amigo, no habia probado la forma que me comentas, voy a hacerlo asi y ojala se acabe el problema.
-
Esa opción no salia por nada asi que tuvimos que formatear la maquina, luego de eso ya salio la opcion tal como la muestras Enter. Pero grande fue mi sorpresa al ver que el error 52 seguia.
Quise resolverlo trabajando con las fuentes en esa maquina pero seguia el problema del msconctl.ocx. Yo estuve trabajando con las fuentes siempre en una virtual. Pase las fuentes al seven de mi casa y alli continue, al parecer alli movi sin percatarme la ruta de registro de ese ocx y por eso no podia abrirlo en la pc del cliente. Ahora supongo que tendré que desregistrar y volver a registrar...
-
Bueno, ahora estoy generando el exe desde mi casa y probando por teamviewer en la pc del cliente. Estoy poniendo msgboxes para ver en que linea exactamente se truena y la encontré, esta es la parte de código:
Private Sub procCargarFoto()
IdFoto = Val(lblMPR_ID)
MsgBox ("Linea de codigo 1") 'borrar esto
MsgBox (memGlobalRutaImagen & IdFoto & ".jpg") 'borrar esto
MiFoto = DIR(memGlobalRutaImagen & IdFoto & ".jpg") 'AQUI EXACTAMENTE SE CAE.
MsgBox ("Linea de codigo 2") 'borrar esto
If Len(MiFoto) > 0 Then
Pic.Picture = LoadPicture(memGlobalRutaImagen & MiFoto)
MsgBox ("Linea de codigo 3") 'borrar esto
Pic.Visible = True
Else
Pic.Picture = frmGraficos.Pic.Picture
MsgBox ("Linea de codigo 4") 'borrar esto
Pic.Visible = True
End If
End Sub
El programa me da dos msgbox y cae
Me da el de Linea de Codigo 1
y este otro:
(http://i.snag.gy/Od39j.jpg)
No llega a msgbox de Linea de Codigo 2.
Asi que la linea del problema es:
MiFoto = DIR(memGlobalRutaImagen & IdFoto & ".jpg") 'AQUI EXACTAMENTE SE CAE.
En este ejemplo la foto no existe y evaluo que si no existe le asigno al picture otra imagen. Esto siempre ha funcionado bien... hasta esta tienda, incluso funciona en las otras 2 tiendas hallan o no halla fotos.
Tengo datos en las variables memGlobalRutaImagen y en IdFoto. En esta linea uso la funcion DIR y esa es la culpable en esta tienda (no en las otras tiendas).
Ahora ¿Porque trona DIR? Con Dir verifico la existencia de un archivo y almaceno en la variable MiFoto un string.
Dir hace conflicto con ESTE W7??? porque recuerden que en otras dos tiendas con red este modulo funciona perfectamente.
-
Aclaro que no tengo activado el Microsoft Scripting Runtime, y es que sin tenerlo activado me funciona en todos los XP y en 2 tiendas con Seven.
¿Que tiene este Seven que me ocasiona el problema?
-
Que raro che yo para asegurarme ahora puse para probar en mi pc todas con win7 64 y este es el code que uso.
Dim xFoto As String
Public Function FileExists(Filename As String) As Boolean
FileExists = (Dir(Filename, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) <> "")
End Function
Private Sub Command1_Click()
xFoto = App.Path & "\IMAGENES\" & ListView1.SelectedItem.SubItems(3) & ".jpg"
If FileExists(xFoto) Then
Picture1.Picture = LoadPicture(xFoto)
Else
Picture1.Picture = LoadPicture (App.Path & "\IMAGENES\default.jpg")
End If
End Sub
Lo que hago es cargar el nombre del archivo que esta alojado en mi bd, lo cargo en un listview todos los nombre y segun vaya haciendo click sobre unos de los item cargo en la variable xFoto y con la funcion FileExists compruebo si existe, si no existe cargo un jpg que se llama default.jpg que si o si va estar por que cuando instalo mi sistema me aseguro que ese este ahi.
-
Bueno papa, gracias por el dato pero creo que voy a apelar a la mariconada. Siempre fui enemigo del "On Error Resume Next" pero esta vez lo usare porque esa parte de código no genera ningún daño en las transacciones cuando hago esto:
(http://saryamaya.files.wordpress.com/2011/04/no-oigo-no-veo-no-digo.jpg)
Y el código ya funciona bien en esa tienda, carga las fotos cuando hay y no las carga cuando no hay poniendo la foto de "sin foto". Aun me gustaría saber porque el DIR en esta PC me ocasiona el error 52.
-
Si vos en esa maquina pones win + r y ejecutas la ruta del msgbox se abre la imagen? si el caso es que no existe probaste poniendo la ruta a ver si se abre? pregunto para ver si tenes permisos y todo funciona como se supone.
Saludos
-
Es decir, cuando no existe imagen la variable tiene una cadena vacia y por eso uso Len, si esta vacia le asigno una imagen que tengo en memoria.
Fijate que esto es de locos (por decir algo) desde la maquina terminal llego a la imagen y no solo eso, la imagen la puse yo desde el terminal hacia la maquina que apunto (la que funca de servidor), por tanto tengo permisos para grabar o borrar.
El Windows 7 que se uso para instalar es el mismo disco de las otras 2 tiendas.
Creo que el problema recae en la funcion Dir en que no me queda claro porque en algunas maquinas funca y porque en estas no.
Aqui en el mundo encontre a alguien que le paso algo similar. Esta en ingles y el traductor de google mucho no me ayudo
http://www.vbforums.com/showthread.php?592071-RESOLVED-Windows-7-and-the-DIR-command
-
No se cual pueda ser el problema, podrias usar el api PathFileExists a ver si el problema persiste.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb773584(v=vs.85).aspx
-
Ok, voy a probar esa funcion (¿Existe eso para VB6? supongo que si), tengo aun una version del proyecto sin el On Error Resume Next pero por mientras lo he dejado en cliente asi ya que para ellos la solucion esta dada, para mi no, y quisiera sacarme el clavo en este tema.
Gracias
-
Esta en ingles pero con el traductor se entiende.
http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx (http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx)
http://stackoverflow.com/questions/8812879/vb6-application-on-windows-7-cannot-access-mapped-drives (http://stackoverflow.com/questions/8812879/vb6-application-on-windows-7-cannot-access-mapped-drives)
-
Igual en esos enlaces no veo que tenga que ver con la función DIR, considera que el UAC lo quite totalmente, lo lleve hasta abajo y aun así seguía el problema solo en 2 PCs. Ya hasta estoy pensando que tenga que ver con algun hardware porque practicamente todo esta clonado y esas dos tienen un comportamiento diferente.
-
Ivan, acabo de replicar lo que comentas aca, el error se da con rutas inexistentes y cuando pones el path de un directorio sin la barra al final. Por otro lado veo que si usas una ruta inexistente tarda mucho un volver y dar error. PathFileExists por otro lado no tiene esos problemas, yo lo reemplazaria.
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Private Sub Form_Load()
Debug.Print PathFileExists("path")
End Sub
-
Hola Cobein. Te comento, la ruta si existe ya que desde que instalo creo la carpeta C:\SistemaQuentas\Imagenes, ahora, no me he fijado con lo del \ al final en mi codigo, creo que no tengo esa barra... pero siendo el mismo aplicativo en ambas tienda ¿?... sin embargo igual voy a observar el \ al final para la tienda del problema.
Con todo igual mejor sigo tu recomendación de usar PathFilesExists estimado.
Muchas gracias.