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]

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

ASP.NET Core Server- und Client-Programmierung

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

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!