evinben
Goto Top

Beim Starten und Abbrechen von VB-Skript Fehlermeldung unterdrücken - Der Vorgang wurde durch den Benutzer abgebrochen. (Windows Script Host)

VB-Skript optimieren - Fehlermeldung beim Abbruch des Skriptes.

Hallo an allen,

wenn ein VB-Skript gestartet wird, wird dem Benutzer in Windows 7/Vista durch die Benutzerkontensteuerung die Ja/Nein-Abfrage angezeigt. Wird „Nein“ gewählt wird, dann wird jeweils die folgende Fehlermeldung ausgegeben:

Windows Script Host
Script: c:\script.vbs
Zeile: 16
Zeichen: 1
Fehler: Der Vorgang wurde durch den Benutzer abgebrochen
Code: 800704C7
Quelle: (null)

Ich kenne mich mit VB-Sprache kaum aus und schaffe daher nicht in dem Code [try], [catch] und [end try] an den richtigen Stellen zu setzen, um die obige Fehlermeldung (die nur beim Abbruch des Skriptes bzw. der Kontensteuerungsabfrage auftritt) zu unterdrücken. Ich habe einige Lehrmittel im Netz, allgemein über Ausnahmebehandlung/Exception, durchgelesen, aber leider schaffe ich es nach mehreren Kombinationen immer noch nicht.
Bzw. andere alternative Methoden dürfen ebenso vorkommen.

Über eure Hilfe freue ich mich sehr.

Anbei ist der Code:

'jumpreg: Nach Eingabe eines Regisrierungsschlüssels, den Registry-Editor in weiterer Instanz öffnen und zum Zweig direkt springen   
Set WshShell = CreateObject("WScript.Shell")  
Dim MyKey
MyKey = Inputbox("Registry-Pfad eingeben")  
MyKey = MyKey
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey",MyKey,"REG_SZ"  
'Der Schalter [/m] von "regedit.exe" ermöglicht es den Registry-Editor in einer weiteren Instanz (neues Fenster) zu starten.  
'Bei Bedarf weglassen, um den gesuchten Schlüssel stets in einem neuen Fenster anzeigen zu lassen.  
WshShell.Run "regedit /m", 1,True  
Set WshShell = Nothing

Gruß,
evinben

Content-Key: 180896

Url: https://administrator.de/contentid/180896

Printed on: April 19, 2024 at 12:04 o'clock

Member: bastla
bastla Feb 22, 2012 at 15:36:23 (UTC)
Goto Top
Hallo evinben!
... schaffe daher nicht in dem Code [try], [catch] und [end try] an den richtigen Stellen zu setzen
Es wird Dir nur ein schwacher Trost sein - aber ich könnte das auch nicht (vor allem, weil wir es mit VBScript und nicht mit JScript oder einem "ausgewachsenen VB" zu tun haben) ... face-wink

Da ich auch etwas Probleme habe, in dem von Dir geposteten Script die in der Fehlermeldung genannte Zeile 16 (und die darauf folgenden) zu finden, kann ich noch nicht einmal einen vernünftigen Vorschlag zum Thema "On Error" machen ...

... nicht zuletzt, weil Du nicht erklärst, was außer dem Unterdrücken der Fehlermeldung dann noch geschehen soll ...

Grüße
bastla
Member: evinben
evinben Feb 22, 2012 at 17:48:40 (UTC)
Goto Top
Hall bastla!
irgendwie wirken deine Zeilen für mich beruhigend ;) - ich dachte es wäre etwas gaaaanz elementares, so dass alle es hier auf Anhieb "na, so wird es doch gemacht, hast du es nicht gewusst?" denken.
... nicht zuletzt, weil Du nicht erklärst, was außer dem Unterdrücken der Fehlermeldung dann noch geschehen soll ...
es soll eigentlich nichts mehr weiteres passieren, außer dass Windows Script Host nicht meckert, wenn ein Benutzer doch die Ausführung des Skriptes abgebrochen hat.
So ein ähnliches Skript (nur umfangreicher - mit mehreren Filter und Funktionen) soll dann in das Explorer-Kontext-Menü rein. Ein Versehentliches Anklicken dieses Eintrages ist ja somit vorprogrammiert und es wäre unangenehm, wenn ständig diese Fehlermeldung nervt.

Über eine Möglichkeit würde ich mich sehr freuen.

Gruß,
evninben
Member: bastla
bastla Feb 22, 2012 at 19:51:38 (UTC)
Goto Top
Hallo evinben!

Mit
On Error Resume Next
weist Du VBS an, im Falle eines Fehlers kommentarlos mit dem nächsten Befehl weiter zu machen (das Script wird daher nicht abgebrochen) - ob Du das in diesem Fall willst, musst Du selbst beurteilen ...

Wenn Du schon weißt, an welcher Stelle ein Fehler zu erwarten ist, kannst Du zusätzlich als nächsten Befehl eine Abfrage der "Err.Number" einbauen, um trotzdem noch auf den Fehler reagieren zu können, etwa
If Err.Number <> 0 Then WScript.Quit 1
Grüße
bastla
Member: evinben
evinben Feb 22, 2012 at 21:45:44 (UTC)
Goto Top
Hallo bastla!
so funktioniert es mit
 On Error Resume Next 
sehr gut – also geht es doch. Danke schön!


Wo genau im Code empfiehlt es sich den anderen Codeabschnitt

 If Err.Number <> 0 Then WScript.Quit 1 

einzufügen? Der Fehler wurde ursprünglich für die Zeile 16 gemeldet (bevor On Error Resume Next hinzugefügt wurde). Heißt es dann, dass die "Err.Number" –Abfrage so wie sie ist unverändert unterhalb der Fehlerzeile eingefügt werden soll (in der 17. Zeile)?

Gruß,
evinben
Member: bastla
bastla Feb 22, 2012 at 21:51:29 (UTC)
Goto Top
Hallo evinben!

Da ja nach einem Fehler die nächste Anweisung (Zeile) ausgeführt wird, sollte dort (also gleich nach der ursprünglichen Zeile 16) die Abfrage platziert werden.

Grüße
bastla

P.S.:
also geht es doch
Ich hatte ja nur darauf hingewiesen, dass es mit "try" nicht geht (weil es das eben in VBS noch nicht gibt) ...
Member: evinben
evinben Feb 23, 2012 at 09:33:51 (UTC)
Goto Top
Hallo bastla,

ich habe die Abfrage in dem Code an der richtigen Stelle eingefügt und es ist alles in Ordnung so. Ob mit Try oder ohne ist mir nun ein Wind.

Vielen herzlichen Dank für die Bereitschaft! Problem gelöst

Gruß,
evinben