2012-10-28 9 views
6

Ich möchte eine EXE-Datei extrahieren. Die EXE-Datei enthält einige Dateien und Ordner. Wenn ich versuche, die Datei mit WinRAR zu extrahieren, die es extrahiert wird, aber wenn ich versuche, die exe-Datei mit ein paar Beispiele zu extrahieren erhalte ich diese Fehlermeldung:Die magische Nummer im GZip-Header ist nicht korrekt. Stellen Sie sicher, dass Sie einen GZip-Stream übergeben (.exe-Datei)

The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.

ich einige Proben verwendet haben und gegoogelt viel für mein Problem aber habe meine Antwort nicht bekommen, und ich habe auch einige Bibliotheken benutzt.

habe ich diesen Code aber denselben Fehler:

public static void Decompress(FileInfo fi) 
    { 
     // Get the stream of the source file. 
     using (FileStream inFile = fi.OpenRead()) 
     { 
      // Get original file extension, for example 
      // "doc" from report.doc.gz. 
      string curFile = fi.FullName; 
      string origName = curFile.Remove(curFile.Length - 
        fi.Extension.Length); 

      //Create the decompressed file. 
      using (FileStream outFile = File.Create(origName)) 
      { 
       using (GZipStream Decompress = new GZipStream(inFile, 
         CompressionMode.Decompress)) 
       { 
        // Copy the decompression stream 
        // into the output file. 
        Decompress.CopyTo(outFile); 

        Console.WriteLine("Decompressed: {0}", fi.Name); 

       } 
      } 
     } 
    } 
+2

Das liegt daran, dass die .exe-Datei nicht eine gültige .gzip-Datei ist, sondern _contains_ one. Es ist eine ausführbare Datei. Winrar ist anscheinend in der Lage, das .gzip darin zu finden (weil es eine solche ausführbare Datei erstellen kann, es sein Layout kennt und es lesen kann). Beachten Sie, dass bei weitem nicht jede .exe-Datei ein selbstextrahierendes Archiv ist. –

+0

also was soll ich tun kannst du mir bitte einen Beispielcode geben bitte gäbe es eine tolle Wertschätzung wenn du mir helfen kannst @JanDvorak –

+0

ich wünschte ich könnte es. Ich suche vielleicht nach dir, kann aber keine Garantie geben. –

Antwort

4

Das ist, weil die .exe Datei ein selbstextrahierendes Archiv ist ...

Sie sollten DotNetZip einen Versuch geben. Aus den FAQ des Projekts:

Does this library read self-extracting zip files?

Yes. DotNetZip can read self-extracting archives (SFX) generated by WinZip, and WinZip can read SFX files generated by DotNetZip.

Sie können einfach install it from Nuget.

Verwandte Themen