Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

715
Vistas
C# File.Exists devuelve falso, el archivo existe

Usando VS 15, C# con .Net 4.5.2
La computadora está en una red AD, con el nombre de anuncio "AD".
Este problema ocurre con los derechos de usuario normal de AD, los derechos de administrador de AD y los derechos de administrador local. No importa qué derechos obtenga el programa, ocurre el mismo problema.

Nuestro archivo de prueba es " C:/windows/system32/conhost.exe ".
El archivo anterior existe, es muy existente. Puedo verlo con el explorador.

Este es el archivo en el explorador:
ingrese la descripción de la imagen aquí

Estas son las propiedades del archivo:
ingrese la descripción de la imagen aquí

Puedes ver que está ahí, ¿verdad?
El siguiente comando cmd verifica si el archivo existe:

 IF EXIST "C:\windows\system32\conhost.exe" (echo does exist) ELSE (echo doesnt exist)

Devuelve " existe " como se prometió.

El siguiente código C# comprueba si el archivo existe:

 FileInfo file = new FileInfo("C:/windows/system32/conhost.exe"); MessageBox.Show(file.Exists + "");

Esto devuelve " Falso ".

Este código también devuelve " Falso ":

 MessageBox.Show(File.Exists("C:/windows/system32/conhost.exe") + "");

Este código tampoco lo encuentra:

 foreach (string file in Directory.GetFiles("C:/windows/system32/")) { //conhost is NEVER mentioned, like it doesn't exist }

Este código tampoco lo encuentra:

 foreach (string file in Directory.EnumerateFiles("C:/windows/system32/")) { //conhost is NEVER mentioned, like it doesn't exist }

Falso, Falso, Falso:

 MessageBox.Show(File.Exists("C:/windows/system32/conhost.exe") + ""); MessageBox.Show(File.Exists("C:\\windows\\system32\\conhost.exe") + ""); MessageBox.Show(File.Exists(@"C:\windows\system32\conhost.exe") + "");

¿Qué estoy haciendo mal?
Nota adicional: copié conhost a C:\conhost.exe, y mi programa puede encontrarlo sin problemas. Mi programa también encuentra otros archivos en system32, pero no conhost y algunos otros. Por ejemplo, encuentra "connect.dll" que está en system32, por lo que no es el permiso de lectura del directorio.
Más notas adicionales: conhost.exe y connect.dll tienen los mismos atributos de seguridad (pestaña Seguridad en las propiedades del archivo).

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si está utilizando un sistema x64, tendrá un contenido diferente del directorio c:\Windows\System32 para las aplicaciones x86 y x64. Asegúrese de estar utilizando la misma arquitectura que ejecuta el archivo por lotes y su aplicación C#.

over 4 years ago · Santiago Trujillo Denunciar

0

En la documentación de MSDN para System.IO.File.Exists(path) , dice:

Si la persona que llama no tiene permisos suficientes para leer el archivo especificado, no se lanza ninguna excepción y el método devuelve falso independientemente de la existencia de la ruta.

Por esta razón, podemos asumir con seguridad que su aplicación no tiene acceso de lectura a ese archivo específico. Verifique la configuración de seguridad y otorgue acceso de lectura si aún no lo ha hecho.

Cree su aplicación (en modo de lanzamiento) y ejecútela como administrador.

over 4 years ago · Santiago Trujillo Denunciar

0

Este es el problema que surge con el sistema operativo de 64 bits... aquí hay una solución,

vaya a las propiedades del proyecto> haga clic en la pestaña de compilación> desmarque Preferir 32 bits

después de eso, debería funcionar correctamente en sistemas operativos de 64 bits.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda