Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

721
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda