Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Question FileExists() no lee .dll en system32

Buena tarde Foro, tengo el siguiente problema con la función FileExists(nombrearchivo). Busco un archivo con extensión .dll (nombrearchivo.dll), sin embargo la función me regresa (False) que no existe este archivo. Sólo lo hace para archivos que están en esa carpeta (Windows\System32) y con extensión .dll, si busco otro tipo de archivo si lo encuentra. Estoy utilizando Delphi 7, Windows 7 64 Bits. Tengo Avira y Superantispywere. El usuario con el que entro es tipo administrador y tiene permiso de acceso total sobre esta carpeta.

Antes los podía encontrar sin problema. Tuve problemas con el Avast y decidí cambiarlo por Avira, no se si la instalación haya cerrado algún acceso o cambiado la configuración de esta carpeta.

Ya probé habilitando opciones en carpeta "Mostrar archivos de sistema". Si copio este archivo a otra carpeta p.ejemplo System, lo encuentra sin problema pero en System32 no lo identifica.

¿Alguien tiene idea de qué puede ser?

Agradezco alguna ayuda.
Responder Con Cita
  #2  
Antiguo 22-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Está claro que es problema de permisos, tendrás que investigar un poco más con se nuevo programa que has instalado.
Responder Con Cita
  #3  
Antiguo 22-05-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No puede probar en Win7 64bits pero he probado en Win7 32bits y la siguiente función funciona Ok.

Código Delphi [-]
function FileExists(const FileName: string): bool;
var
  Handle: THandle;
  FindData: TWin32FindData;
begin
  Handle := FindFirstFile(PChar(FileName), FindData);
  Result := (Handle <> INVALID_HANDLE_VALUE);
  if Result then Windows.FindClose(Handle);
end;

Saludos.
Responder Con Cita
  #4  
Antiguo 23-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Gracias por responder. Pues el programa está en delphi y simplemente lo que hice fue actualizar el proyecto. Voy a probar la solución que planteas escafandra.

Les comento en cuanto tenga resultados.
Responder Con Cita
  #5  
Antiguo 23-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Cargué la función de escafandra pero sigue sin ver a los archivos .dll. Me tendré que pelear con permisos y características de la carpeta.

Gracias por sus comentarios.
Responder Con Cita
  #6  
Antiguo 24-05-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Prueba hacer esto:
Mi PC
Menu --> Herramientas, Lengueta [Ver], Busca y desmarca [] Ocultar las extensiones de archivo para tipos de archivo conocidos

Haber si con esto te funciona.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #7  
Antiguo 24-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Gracias, tampoco funcionó sigue sin encontrar los archivos .dll en el system32. Sigo buscando permisos o algún bloqueo para esos archivos.
Responder Con Cita
  #8  
Antiguo 24-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por to_to Ver Mensaje
Gracias, tampoco funcionó sigue sin encontrar los archivos .dll en el system32. Sigo buscando permisos o algún bloqueo para esos archivos.
Hola to_to.

Sólo a fines de prueba y delimitar el motivo, fijate si de este modo te muestra los archivos .dll en el ListBox:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  sr: TSearchRec;
  bSize: DWORD;
  Path : string;
begin
  bSize := GetEnvironmentVariable('ComSpec', nil, 0);
  if bSize = 0  then  Exit;
  SetLength(Path,bSize-1);
  GetEnvironmentVariable('ComSpec', PChar(Path), bSize);
  Path := ExtractFilePath(Path);

  ListBox1.Items.BeginUpdate;
  try
    if FindFirst(Path + '*.DLL', $20, sr) = 0 then
      repeat
        ListBox1.Items.Add(sr.Name);
      until FindNext(sr) <> 0;
      FindClose(sr);
  finally
    ListBox1.Items.EndUpdate;
  end;
end;
Aunque dudo que lo haga si no te resultaron las propuestas anteriores ...

Saludos.

Edito: Acabo de encontrar un enlace que tal vez te sirva revisar: FindNextFile fails on 64-bit Windows?
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2013 a las 20:53:43.
Responder Con Cita
  #9  
Antiguo 24-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Gracias, lo pruebo y te comento...
Responder Con Cita
  #10  
Antiguo 25-05-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
to_to,

Cita:
Empezado por to_to
...la función FileExists...archivo con extensión .dll...regresa (False)...Sólo...en...(Windows\System32)...utilizando Delphi 7 y Windows 7 64 Bits...
Cita:
Empezado por to_to
...Antes los podía encontrar sin problema...Tuve problemas con el Avast y decidí cambiarlo por Avira...
Cita:
Empezado por to_to
...El usuario con el que entro es tipo administrador y tiene permiso de acceso total...
Te comento:

1- La función FileExists de Delphi funciona correctamente (Windows\System32) en una Máquina Virtual con Windows 7 Professional x64 y Delphi 7.

2- El código sugerido en los Msg #3 y #8 funciona correctamente (Windows\System32) en una Máquina Virtual con Windows 7 Professional x64 y Delphi 7.

Pregunto:

1- ¿Si deshabilitas el antivirus Avira la función FileExists de Delphi funciona correctamente en Windows\System32?.

2- ¿Después del problema con el antivirus Avast y antes de instalar Avira se presentaba el problema señalado?.

3- ¿El problema solo ocurre después de instalar Avira?.

4- ¿Hay alguna opción en Avira que permita ignorar programas o directorios específicos en su proceso de detección de amenazas?.

Es probable que el problema sea originado en Avira Antivirus por alguna opción de protección del sistema, te sugiero considerar las preguntas anteriores y revisar la configuración del programa en cuestión.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 25-05-2013 a las 04:57:45.
Responder Con Cita
  #11  
Antiguo 25-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Buenas noches, gracias por contestar.

En cuanto al código de prueba para cargar los archivos en el listbox, curiosamente si carga los .dll pero no el archivo que necesito. Estoy por revisar los permisos o propietario del archivo ya que como lo pasaron, es probable que el usuario propietario no tenga permisos sobre la carpeta del system32. Estoy intentando crear ese mismo archivo (con el mismo nombre) con el usuario que corre la aplicación. Antes de crearlo le otorgaré permisos al usuario con el que estoy probando.

Pregunto:

Cita:
1- ¿Si deshabilitas el antivirus Avira la función FileExists de Delphi funciona correctamente en Windows\System32?.
Fue lo primero que intenté pero siguió sin funcionar. Efectivamente pensé que algo estaba bloqueando o había cambiando permisos de acceso a la carpeta. Lo di de baja y no se resolvió.

Cita:
2- ¿Después del problema con el antivirus Avast y antes de instalar Avira se presentaba el problema señalado?.
Esto no lo pude validar ya que me empezó a detectar que el programa con el que probaba tenía virus, me enfoqué a quitar los virus, incluyendo la desinstalación de Avast y la instalación del Avira. Lo que si estoy seguro es que antes de los problemas de virus funcionaba perfectamente. Pero cuando me pasaron el archivo "infectado" con el Win32 / Alaman, no pude abrirlo más ya que el Avast me lo enviaba a cuarentena.

Cita:
3- ¿El problema solo ocurre después de instalar Avira?.
Aparentemente así es, el Avira detectó nuevamente los virus y limpié archivos. Posteriormente con los archivos des-infectados probé y ya no pude ver más el archivo del system32. Revisé permisos en carpeta y archivos y aparentemente no vi algún cambio.


Cita:
4- ¿Hay alguna opción en Avira que permita ignorar programas o directorios específicos en su proceso de detección de amenazas?.
Tengo el Avira versión libre, he revisado la configuración y no veo ese tipo de bloqueo. De hecho porque al parecer ocurre con un solo tipo de archivo y dentro del system32. Como lo mencioné al principio, en esa misma carpeta si puede localizar y recuperar archivos de otra extensión, y también hice la prueba poniendo el archivo .dll en otra carpeta y si lo lee.
Responder Con Cita
  #12  
Antiguo 25-05-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
to_to,

Cita:
Nelson : ¿El problema solo ocurre después de instalar Avira?

to_to : Aparentemente así es...
Pregunto:

1- ¿La función FileExists de Delphi falla con todos los archivos .dll en Windows\System32 o solo uno en específico?.

2- ¿Puedes desinstalar el Antivirus Avira y probar si el problema continua?.

Te comento:

1- En el Msg #1 indicas que utilizas un usuario tipo Administrador por lo cual no parece un problema de permisología, si y solo si realmente es un usuario tipo Administrador con acceso total al sistema.

2- Revisa la máquina en cuestión con otro antivirus, te recomiendo NIS 2013 de Symantec para validar que esta libre de Malware.

3- Revisa estos links:
Espero sea útil

Nelson.
Responder Con Cita
  #13  
Antiguo 25-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Primero debería probar en otro ordenador que no tenga problemas de virus.
Responder Con Cita
  #14  
Antiguo 26-05-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Algunos virus protegen determinados archivos vitales para ellos. Lo hace realizando bien hook a la API o bien desde el Kernel. Si has estado infectado piensa en la posibilidad de seguir estándolo.

Saludos.
Responder Con Cita
  #15  
Antiguo 26-05-2013
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.485
Poder: 20
MAXIUM Va camino a la fama
System32 esta en el PATH del sistema por lo que cualquier ejecutable que coloques ahí, lo puedes invocar desde la línea de comando desde cualquier ruta en forma directa.

Por otra parte, en el FileExists() no coloques la ruta directa, sino que la variable del sistema.

Por ejemplo para la carpeta de Windows sería %windir% lo mismo para system32. Puedes buscar la lista completa en Google colocando variables sistema windows o buscar información sobre como hacerlo mediante WMI.

No se que problemas habras tenido con Avast pero al igual que este, Avira permite excluir el escaneo de archivos o carpetas. Pero no es recomendable para nada hacerlo, ya que los malwares se alojan y "crean" ahí.

Parte desinfectado el sistema:
- Corre CCleaner, tanto archivos como registro de Windows.
- Luego corre Malwarebytes.
Responder Con Cita
  #16  
Antiguo 26-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Gracias por sus ideas y aportes, en verdad que me me están dando más alternativas para encontrar realmente el problema. Tuve que suspender momentáneamente esta parte del desarrollo para continuar con las pruebas, por el momento lo puse en otro directorio y de ahí leo el archivo. Espero mañana retomar este caso para aplicar las opciones que me han dado y encerrar el problema.
Responder Con Cita
  #17  
Antiguo 29-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Hola nuevamente, he realizado lo que me han sugerido y en orden de ideas les comento lo siguiente:

1.- Probé en otro equipo (Win XP, no tengo otro con Win 7) y no tiene problema para localizar el archivo, lo encuentra y lo lee correctamente.

2.- Desinstalé el Avira y continua el mismo problema.

3.- Revisé mi equipo con 4 diferentes antivirus (superantispyware, dr. cureit, mabam, fileassassin) detecté algunos troyanos pero no de gravedad. Quedó limpiecita la lap y además pasé el ccleaner y aún continua el problema.

4.- Modifiqué permisos, asigné control total sobre los archivos que quiero buscar y leer a todos los usuarios y nada.

Ahora bien, si trato de leer la carpeta system32 incluso con otra aplicación que no esté en delphi, tampoco "ve" los archivos en esa carpeta, ve otros archivos .dll pero el que yo creo o modifico no los "ve", con el navegador de windows si se ven. Lo curioso es que cuando paso este archivo a otra carpeta lo "ve" sin problema. Supongo que ha de ser alguna "restricción" o configuración de la seguridad de la carpeta junto con la de los archivos que he copiado ahí.

Agradeceré alguno otra sugerencia.
Responder Con Cita
  #18  
Antiguo 29-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Question

Por otro lado y al determinar que el problema no es la función del fileExists(), no se si sea conveniente continuar este hilo en este foro, por mi parte también he abierto un tema en cuanto a la seguridad y permisos de Win 7 en el foro "infospyware". Si me lo permiten, me gustaría dejar este hilo un poco más de tiempo para determinar el error real y postear aquí la solución que pudiera encontrar.

Gracias nuevamente.
Responder Con Cita
  #19  
Antiguo 29-05-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿no será Windows 7? El archivo que intentas leer, ¿es de la instalación de windows, o bien lo has puesto tú?

Lo pregunto porque en W7, si un programa pone un archivo en windows\system y demás, si no tiene privilegios de administrador, en realidad te lo coloca en c:\users\<nombre usuario>\ en una carpeta oculta. En principio, eso es totalmente transparente a los usuarios, pero quizás tenga algo que ver.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #20  
Antiguo 29-05-2013
to_to to_to is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 39
Poder: 0
to_to Va por buen camino
Es un archivo que yo he creado y lo copié en el windows\system32. Como lo mencioné no tenía ese problema, antes lo podía localizar desde cualquier aplicación. Ahora sólo lo veo en el explorador de windows pero al tratar de recuperar o abrir este archivo desde delphi no es visible, la función fileexists() envía false ya que no lo encuentra. Ya busqué en las carpetas de usuarios pero no se si tienen un nombre en especial la carpeta oculta que mencionas porque en la única carpeta que lo encontré fue en "recientes".
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fallo copyfile y fileexists en servicio windows y red Ivanzinho Varios 4 13-08-2013 10:50:59
Duda con FileExists nena_yei OOP 12 04-11-2010 18:20:05
FileExists o DirectoryExists pero no solo en el actual pnikkosis OOP 2 01-12-2009 05:24:07
Fileexists sobre una red Kipow Varios 2 26-05-2006 15:57:43
ShellExecute y "c:\WINDOWS\system32\telephon.cpl" Durbed API de Windows 7 20-12-2005 22:33:04


La franja horaria es GMT +2. Ahora son las 19:34:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi