Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 44
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Prüfen ob eine Datei eine EXE ist


Autor: Jörg Meyer
Sprache: C#
Bewertung: 1,8
(1 Bewertung)
Anzahl der Aufrufe: 2545
  
Kick it on dotnet-kicks.de  

Beschreibung:

In Anlehnung an http://dotnet-snippets.de/dns/pruefen-ob-datei-eine-exe-datei-ist-SID539.aspx

Abgelegt unter: Executeable, EXE, PE, Ausführbare Datei.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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;
            }
        }
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Schork schrieb am:  05.05.2009 09:48:10

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 15:15:30

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 22:49:02

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.


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.