.vbs Datei zur Makroausführung erstellt, Antivirus-Programm verhindert öffnen

  • VBScript

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Dennis89!.

    .vbs Datei zur Makroausführung erstellt, Antivirus-Programm verhindert öffnen

    Guten Abend zusammen,

    bin neu hier im Forum und auch neu in der Thematik VBS.

    Ich habe eine Datei erstellt, welche mein VBA (Excel) -Progrmm startet, dies funktioniert jedoch nur wenn ich mein Antiviren-Programm ausschalte. Dieses verschiebt mir die vbs-Datei immer in Quarantäne.
    Ich kann zwar eine Ausnahme erstellen, da das Programm aber später auf verschiedenen Rechner laufen soll, wäre das keine elegante Lösung.

    Gibt es eine Möglichkeit durch einen Code das zu umgehen? Eigentlich kann ich es mir nicht vorstellen, da Schädlingssoftware ja sonst leichtes Spiel hätte ?(
    Vielleicht hat ja einer eine Idee :)

    Der Inhalt meiner vbs-Datei sieht so aus:

    VB.NET-Quellcode

    1. Option Explicit
    2. Dim xlApp , Pfad, MyPath, Application
    3. With WScript
    4. MyPath = Replace(.ScriptFullName&":", .ScriptName&":", "")
    5. End With
    6. Set xlApp = CreateObject("Excel.Application")
    7. xlApp.Visible = True
    8. Pfad = MyPath & "\Nahtberechnung.xlsm"
    9. xlApp.Workbooks.Open Pfad
    10. set xlApp = nothing


    Achja gibt es eigentlich eine Möglichkeit den Bildschirm wärend des Ladevorgangs einzufrieren bzw. die Bildschirmaktualissierung zu verhindern und eventuell die Sanduhr oder einen Ladebalken anzuzeigen?

    Vielen Dank jetzt schon mal für eure Mühe :)

    Grüße Dennis
    Ich habe keine Ahnung, was dein Virenscanner nicht mag.
    Du kannst ja das Script so lange kürzen, bis es nicht mehr angemeckert wird.
    Sind ja eh nur ein paar Zeilen.

    Vielleicht mag er auch keine syntaktisch schlampigen Ausdrücke.
    Ersetze Zeile 6 durch
    MyPath = Replace(.ScriptFullName & ":", .ScriptName & ":", "")

    Oder lass mal das With weg und programmier keine Leerfunktionen

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim xlApp, Pfad, MyPath, wb
    3. MyPath = Replace(WScript.ScriptFullName & ":", WScript.ScriptName & ":", "")
    4. Set xlApp = CreateObject("Excel.Application")
    5. Pfad = MyPath & "\Nahtberechnung.xlsm"
    6. Set wb = xlApp.Workbooks.Open (Pfad)
    7. xlApp.Visible = True
    8. MsgBox "file is open"
    9. wb.Close False
    10. MsgBox "file is closed"
    11. xlApp.Quit
    12. Set xlApp = Nothing

    Dennis89! schrieb:

    Achja gibt es eigentlich eine Möglichkeit den Bildschirm wärend des Ladevorgangs einzufrieren
    Wozu?
    Das ist ein merkwürdiger Wunsch.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Hallo und vielen Dank :)

    Mit deinem Code wird mein Programm viel eleganter geöffnet, ohne dass etwas von Excel zu erkennen ist. Dies macht das Bildschirm einfrieren unnötig :)

    Mein Antivirenprogramm hat auch nicht mehr gemeckert, ich werde es morgen noch an einem anderen Rechner testen :)

    Allerdings benötigt mein Laptop 5 Sekunden bis das Programm geöffnet ist, da wäre eine Sanduhr schön um dem Anwender zu zeigen, dass sich nach dem Doppelklick etwas in Bewegung gesetzt hat :)

    Vielleicht mag er auch keine syntaktisch schlampigen Ausdrücke.

    Habe den Code im Internet gefunden :whistling: Habe leider noch gar keine Ahnung was vbs-Dateien angeht.

    Danke und Grüße
    Dennis

    Dennis89! schrieb:

    Allerdings benötigt mein Laptop 5 Sekunden bis das Programm geöffnet ist, da wäre eine Sanduhr schön um dem Anwender zu zeigen, dass sich nach dem Doppelklick etwas in Bewegung gesetzt hat
    Du kannst ja Zeile 7 um eine Zeile nach oben versetzen, dann sieht der Anwender schneller was.
    Aber das hat dich ja eigentlich gestört.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo,

    Zeile 7 zeigt mir die Excel-Umgebung an, dann möchte ich nicht und habe sie deswegen auch auf False gesetzt.
    Mein VBA-Programm besteht nur aus Userforms, Exceltabellen werden nicht benötigt und werden deswegen auch nicht angeziegt.

    Avast Antivurs meldet folgende Bedrohung:
    Die vbs-Datei sei mit IDP.HELU.ScriptPhishing20 infiziert

    Danke und Grüße
    Dennis
    Wenn dir die Excel-Anwendung nicht gefällt, kannst du auch kurz ein Popup anzeigen.

    Visual Basic-Quellcode

    1. CreateObject("WScript.Shell").Popup "Bitte warten", 2, "Excel Start", 0

    Dennis89! schrieb:

    Mein VBA-Programm
    Was ist jetzt los?
    Bisher war die Rede von VBS.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Hallo,

    Danke für die Info mit dem Pop-Up, das werde ich nachher gleich versuchen :)

    Mit VBA war das Programm gemeint, dass durch die vbs-Datei aufgerufen wird. Es geht hier auch nur um diese vbs-Datei.

    Hast du noch Ratschläge bezüglich des Antiviren-Programms?

    Vielen Dank und Grüße
    Dennis

    Dennis89! schrieb:

    Hast du noch Ratschläge bezüglich des Antiviren-Programms?
    ???

    Dennis89! schrieb:

    Mein Antivirenprogramm hat auch nicht mehr gemeckert


    petaod schrieb:

    Du kannst ja das Script so lange kürzen, bis es nicht mehr angemeckert wird.
    Sind ja eh nur ein paar Zeilen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    ​???


    Avast Antivurs meldet folgende Bedrohung:Die vbs-Datei sei mit IDP.HELU.ScriptPhishing20 infiziert


    Das hat sich jetzt erledigt, es lag komischerweise an dem Datei-Namen. Die Datei hieß "Schweißnaht Berechnung.vbs" mit dem Namen "Schweißnaht_Berechnung.vbs" ging es auch nicht. Als ich es eigentlich aus Faulheit als "Neues Textdokument.vbs" gespeichert habe, kam plötzlich keine Meldung des Antiviren-Programms mehr. ?(

    Deine Idee mit dem Pop Up funktioniert auch gut. Vielen Dank dafür :)
    Gibt es noch die Möglichkeit das Pop-Up ohne "Ok"-Schaltfläche anzeigen zu lassen? Es soll dann entweder wie jetzt auch, nach einer vorgegebenen Zeit geschlossen werden oder es soll automatisch geschlossen werden, wenn die Excel-Anwendung geöffnet ist.

    Danke und Grüße
    Dennis

    Dennis89! schrieb:

    Es soll dann entweder wie jetzt auch, nach einer vorgegebenen Zeit geschlossen werden oder es soll automatisch geschlossen werden, wenn die Excel-Anwendung geöffnet ist.
    Das Popup schliesst automatisch, wenn entweder OK geklickt wird oder nach (in diesem Fall) 2 Sekunden.
    Das Ganze ist ein wenig Betrug.
    Es läuft nicht parallel im Hintergrund, sondern es läuft blockierend.
    Das Öffnen der Datei erfolgt erst, nachdem das Popup sich schießt.
    Deshalb auch nur die zwei Sekunden.

    Echte Nebenläufigkeit ist mit VBS nicht möglich.
    Möglichkeit 1: Du schreibst ein Programm, das sich sofort beendet, vorher aber noch ein zweites Programm losgelöst startet, wo du deinen Ladebalken anzeigst.
    Eine Möglichkeit wäre es, als Startprogramm CMD START zu verwenden.
    Als losgelöstes Programm könntest du ein VBS mit Popup verwenden.
    Oder halt was Eleganteres.

    Möglichkeit 2: Du implementierst mit Hilfe eines Timers in Excel-VBA einen Splashcreen.
    Ist sehr tricky zu programmieren und wird wahrscheinlich zu spät gestartet, nämlich im Workbook_Open-Event.
    Da ist zumindest der Dateiladevorgang schon beendet.

    So einen Aufwand für VBS / VBA zu programmieren ist in meinen Augen Mumpitz.
    Da hast du für deinen Launcher schneller ein kleines VB.Net-Programm geschrieben.
    Da bist du auch vor Virenscannern sicher.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()