Hay un cómo y una parte when/where. El cómo es bastante simple, ya que los archivos binarios contienen un encabezado y el encabezado es bastante fácil de quitar y verificar. Para archivos de Windows, puede verificar el artículo Executable-File Header Format. Se usan formatos similares para otros tipos binarios, por lo que puede determinar los tipos que permite y los que no.
NOTA: El artículo vinculado es para la consulta completa del archivo. Hay accesos directos baratos, descendentes y sucios donde solo se examinan algunos bytes.
El cuándo/dónde depende de cómo se obtienen los archivos. Si está utilizando una metodología muy abstracta (biblioteca de carga), que es bastante normal, puede que tenga que transmitir todo el archivo antes de poder comenzar a consultar los bits. Si se transmite en la memoria o si tiene que guardar y eliminar depende de su codificación y posiblemente incluso de la biblioteca. Si controla la transmisión, tiene la capacidad de transmitir en los primeros bytes (parte del encabezado) y abortar el proceso en mitad de la transmisión.
Los encabezados de archivo pueden estar falsificados. Comprueba los primeros dos bytes de los datos cargados. Si es 'MZ', es probable que tengas un ejecutable. –
duplicado: http://stackoverflow.com/questions/3635128/validate-file-type-extension – Matthieu