2017-01-17 1 views
1

Je veux détecter exe fichier qui a été créé avec des outils zip? comme 7z ou WinRAR ou ..., je veux dire des fichiers SFX (executable auto-extractible)Comment faire la distinction entre un fichier exe normal et un fichier auto-extractible en C#?

Je dois trouver un moyen de faire la distinction entre les fichiers et les fichiers normaux exe SFX en C#?
Existe-t-il des moyens de les détecter en C#?

+1

WinRAR ont [séquence de blocs marqueur] (http://stackoverflow.com/questions/13275687/how-can-i-identify-a-winrar-sfx-using-a -binary-signature-of-some-sort), mais seulement pour WinRAR. Un commentaire suggère une méta-solution, il suffit d'utiliser 7z ou unRAR pour tenter d'extraire le fichier (cela peut ou non être ce que vous voulez en fonction de la taille et des besoins réels) – Martheen

Répondre

0

Vous pouvez juste faire le format .exe au format .rar et double-cliquez pour ouvrir (PAS extraire) vers le haut pour afficher le contenu, le plus probable serait un fichier auto-extractible si votre WinRAR ou 7z parvient à l'ouvrir pour toi. Mais si vous obtenez une erreur en essayant d'afficher le contenu dans le fichier .rar, alors il s'agira probablement d'un fichier .exe normal.

Je crois qu'il existe d'autres méthodes mais c'est celle que j'utilise couramment car c'est assez simple.

Cela étant dit, ce que vous devez laisser le C# faire est la suivante:

  1. Modifier le format du fichier à .rar
  2. Ouvrez le fichier en utilisant WinRAR ou 7z
  3. Utiliser le bloc try-catch, donne un message d'erreur si l'ouverture échoue, sinon, donne un message positif si l'ouverture est réussie.

Si vous avez besoin d'aide avec la modification du format de fichier, vous pouvez consulter à ce sujet: Change File Extension Using C#

Si vous avez besoin d'aide avec l'ouverture du fichier: How do I launch files in C#

1

si elle est SFX de toute compression, il sera un fichier exécutable standard pour vous ..

vous pouvez donc adopter une approche pour valider ou non exécutable

How to find if a file is an exe?

Vérifier la réponse de Chris Schmich