Feedback

C# - Prüfen ob eine Datei eine EXE ist

Veröffentlicht von am 03.05.2009
(1 Bewertungen)
In Anlehnung an http://dotnet-snippets.de/dns/pruefen-ob-datei-eine-exe-datei-ist-SID539.aspx
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

public Boolean IsExecuteable(String aFileName)
        {
            if (File.Exists(aFileName))
            {
                try
                {
                    FileStream FS = new FileStream(aFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                    Byte[] Data = new Byte[4];
                    FS.Seek(128, SeekOrigin.Begin);
                    FS.Read(Data, 0, 5);
                    FS.Close();

                    if ((Data[0] == 80) & (Data[1] == 69) & (Data[2] == 0) & (Data[3] == 0) & (Data[4] == 76))
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
Abgelegt unter Executeable, EXE, PE, Ausführbare Datei.

3 Kommentare zum Snippet

Schork schrieb am 05.05.2009:
So wie ich das sehe gibt es in diesem Script eine kleinen Fehler. Das Array Data wird mit vier Elementen erzeugt jedoch mit fünf Elementen befüllt. Das passt nicht. Die Zeile 8 müsste wie folgt lauten:
Byte[] Data = new Byte[5];
Michael Rummel schrieb am 06.05.2009:
Code sollte bezüglich des Arrays richtig sein.
0 - basiertes Array.
Bei 5 Inhalten ist das 0-4 also byte[4]

Man könnte das Snippet noch etwas erweitern um unnötig exception auslösen zu verhindern.
Gate schrieb am 07.05.2009:
Nein, Schork hat recht, dass ist ein Fehler und du sagst es in deinem Kommentar auch auch selbst: "Bei 5 Inhalten ist das 0-4 also byte[4]" 5 Inhalte -> reserviert für 4 mit byte[4], womit das Array von 0 - 3 reicht.
Desweiteren würde ich das Snippet auch noch ändern zu:

return (Data[0] == 80) & (Data[1] == 69) & (Data[2] == 0) & (Data[3] == 0) & (Data[4] == 76);

Ist kompakter.
 

Logge dich ein, um hier zu kommentieren!