2016-04-27 6 views
0

Ich bin in eine sehr seltsame Sache geraten. Ich habe ein ziemlich einfaches Programm in C# geschrieben und versucht, eine 32-Bit- und eine 64-Bit-Version davon zu erstellen. Die 64-Bit-Version funktioniert einwandfrei, aber wenn ich versuche, die 32-Bit-Version zu erstellen, wird sie von meiner Antivirensoftware entfernt. Ich habe beide Dateien hochgeladen Virustotal hier:Virustotal Flagge 32-Bit-Version meines Programms als Malware

32 Bit: https://virustotal.com/da/file/fdb3d2870ce876b49eb5d9371fc0b133b7657ddd994603777a42a47f3eb09d8b/analysis/1461779525/

64 Bit: https://virustotal.com/da/file/83334954cb0baef30153ca8bdfa900b64fef33f1983899c9e54e9156b72df00c/analysis/1461779699/

Warum? Es ist komplett derselbe Code und der einzige Unterschied ist, dass ich vor der Erstellung zwischen x64 und x86 gewechselt habe.

+0

hier das Projekt (VS2015) https://dl.dropboxusercontent.com/u/83131608/ResistorLookup.7z – Linkyyy

Antwort

0

Sie könnten Ihr Projekt auf AnyCPU setzen, nachdem Sie die P/Invokes aus Ihrem Code entfernt haben. Auf diese Weise benötigen Sie kein x86 und kein x64 Build.

ich nichts in Ihrem Projekt sehen, das sieht aus, mit Ausnahme der Verwendung der folgenden Zeilen:

[DllImport("psapi.dll")] 
    static extern int EmptyWorkingSet(IntPtr hwProc); 

    static void MinimizeFootprint() 
    { 
     EmptyWorkingSet(System.Diagnostics.Process.GetCurrentProcess().Handle); 
    } 

    ... 

    GC.Collect(); 
    MinimizeFootprint(); 

Angesichts Ihre kleine Anwendung, soll es wirklich keine Notwendigkeit, die Garbage Collector manuell zu rufen und zu Optimiere das Workingset. .

Statt nur Ihre Bürsten reinigen, wenn Sie mit ihnen fertig sind:

private void DrawResistor(PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 
    SolidBrush brs; 

    //Første farve 
    g.DrawLine(Pens.Black, 130, 35, 130, 109); 
    g.DrawLine(Pens.Black, 140, 35, 140, 109); 
    using (brs = new SolidBrush(this.Controls.Find(Farver[0], false)[0].BackColor)) 
    { 
     g.FillRectangle(brs, 131, 35, 9, 75); 
    } 

    //Anden farve 
    g.DrawLine(Pens.Black, 160, 44, 160, 100); 
    g.DrawLine(Pens.Black, 170, 44, 170, 100); 
    using (brs = new SolidBrush(this.Controls.Find(Farver[1], false)[0].BackColor)) 
    { 
     g.FillRectangle(brs, 161, 44, 9, 56); 
    } 

    //Tredje farve 
    if (comboBox1.SelectedIndex != 0) 
    { 
     g.DrawLine(Pens.Black, 190, 44, 190, 100); 
     g.DrawLine(Pens.Black, 200, 44, 200, 100); 
     using (brs = new SolidBrush(this.Controls.Find(Farver[2], false)[0].BackColor)) 
     { 
      g.FillRectangle(brs, 191, 44, 9, 56); 
     } 
    } 

    //Fjerde farve 
    g.DrawLine(Pens.Black, 220, 44, 220, 100); 
    g.DrawLine(Pens.Black, 230, 44, 230, 100); 
    using (brs = new SolidBrush(this.Controls.Find(Farver[3], false)[0].BackColor)) 
    { 
     g.FillRectangle(brs, 221, 44, 9, 56); 
    } 

    //Femte farve 
    g.DrawLine(Pens.Black, 265, 35, 265, 109); 
    g.DrawLine(Pens.Black, 280, 35, 280, 109); 
    using (brs = new SolidBrush(this.Controls.Find(Farver[4], false)[0].BackColor)) 
    { 
     g.FillRectangle(brs, 266, 35, 14, 75); 
    } 

    //Sjette farve 
    if (comboBox1.SelectedIndex == 2) 
    { 
     g.DrawLine(Pens.Black, 293, 35, 293, 109); 
     g.DrawLine(Pens.Black, 303, 35, 303, 109); 
     using (brs = new SolidBrush(this.Controls.Find(Farver[5], false)[0].BackColor)) 
     { 
      g.FillRectangle(brs, 294, 35, 9, 75); 
     } 
    } 
} 
+0

Dank für deine Antwort! kurz bevor ich meinen code gepostet habe, habe ich festgestellt, dass ich picturebox1.image innerhalb des OnPaint-ereignisses gesetzt habe, weshalb es fast 80 MB zu der zeit verwendete. Ich habe das behoben und vergessen, den Sammelaufruf zu entfernen, und die andere API-Optimierung. Ich habe diesen Teil entfernt und wenn ich mit x86 als Ziel neu kompiliere, markiert es immer noch die EXE-Datei. Sehr eigenartig! Diese https://virustotal.com/da/file/7c306c6c1bf2803add0cc3b7541c2566f0995054c81a9f725459f22249cb9a47/analysis/1462114085/ – Linkyyy

+0

ist die neuen Projektdateien https://dl.dropboxusercontent.com/u/83131608/ResistorLookup2.7z – Linkyyy

+0

Die binäre sieht gut aus, mein eigenes Anti-Virus kennzeichnet es auch nicht. Nichts, was Sie tun können, als das falsche Positiv mit Ihnen zu kennzeichnen Anti-Virus-Lieferant. PS: Sie sollten die using-Anweisungen wirklich verwenden, um Ihre Pinsel zu entsorgen. – jessehouwing

Verwandte Themen