Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

722
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!