8.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von klammi Einsteiger_in (7 Punkte)
Beim Ausführen einer .vbs-Datei kommt folgende Fehlermeldung:
regschnueffler.vbs
Zeile: 72
Zeichen: 1
Fehler: Erlaubnis verweigert.
Code: 800A0046
Quelle: Laufzeitfehler in Microsoft VBScript

Was kann ich tun, damit das Script wieder funktioniert?

Danke für Hilfen! Klammi

6 Antworten

0 Punkte
Beantwortet von
[quote]Was kann ich tun, damit das Script wieder funktioniert?[/quote]

vbs dateien sind klartext, die kannst du mit notepad öffnen und die zeile 72 nachgucken. oder das ganze script hier mal aufführen dann kann man dir weiterhelfen
0 Punkte
Beantwortet von Experte (3.2k Punkte)
Der Fehler Erlaubnis verweigert zusammen mit dem Namen regschnueffler.vbs lässt den Verdacht aufkommen, dass dieses Script eventuell bösartig ist und du Glück hast, dass es nicht richtig funktioniert.
Was ist das denn für ein Script? Wahrscheinlich ist es wie in A#1 vorgeschlagen, keine schlechte Idee, uns mal das Script (wenn möglich) zu zeigen.

Ele
0 Punkte
Beantwortet von klammi Einsteiger_in (7 Punkte)
Hallo halbsowild und Elefunty!
Leider weiß ich nicht, wie ich Euch antworten soll im Forum, ich probiers mal so..

Also, das Script regschnueffler.vbs ist eine nützliche Sache zum Durchsuchen der Registry nach bestimmten Begriffen, deren Vorkommen dann aufgelistet werden und - bis zum Auftreten des besagten Fehlers - auch optional als Textdatei abgespeichert werden können.
Das komplette Script hier:
Option Explicit
Dim oWS : Set oWS = CreateObject("WScript.Shell")
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")

Dim sSearchFor
sSearchFor = InputBox("Dieses Programm durchsucht deine Registrier- " & _
"ungsdatenbank, um alle Vorkommen des eingegebenen" & _
" Ausdrucks zu finden." & vbcrlf & vbcrlf & _
"Bitte warten, dies kann evtl. einige Minuten dauern." & _
vbcrlf & vbcrlf & "Gib den gesuchten Ausdruck ein und " & _
"klick OK...", WScript.ScriptName & " " & Chr(169) & " Sö")

If sSearchFor = "" Then Cleanup()

Dim StartTime : StartTime = Timer

Dim sRegTmp, sOutTmp, eRegLine, iCnt, sRegKey, aRegFileLines

sRegTmp = oWS.Environment("Process")("Temp") & "\RegTmp.tmp "
sOutTmp = oWS.Environment("Process")("Temp") & "\sOutTmp" & _
Hour(Now) & Minute(Now) & Second(Now) & ".tmp "

oWS.Run "regedit /e /a " & sRegTmp, , True '/a enables export as Ansi for WinXP

With oFSO.OpenTextFile(sOutTmp, 8, True)
.WriteLine("REGEDIT4" & vbcrlf & "; " & WScript.ScriptName & " " & _
Chr(169) & " Sö" & vbcrlf & vbcrlf & "; Ergebnisse - " & _
"Registry-Suche nach " & Chr(34) & sSearchFor & Chr(34) & " " & Now & _
vbcrlf & vbcrlf & "; Die Datei wird beim Schließen gelöscht, " & _
"ALSO:" & vbcrlf & "; Speichere die Datei in einem Verzeichnis " & _
"deiner Wahl zur weiteren Nutzung." & vbcrlf & "; (Wenn du sie als .reg-Datei speicherst, " & _
"kannst du die Einstellungen erneut in die Registry schreiben oder " & vbcrlf & "; diese Änderungen an den aufgelisteten Werten zurücksetzen, " & _
"indem du vor den Schlüssel in die eckige Klammer ein - setzt.)" & vbcrlf)

With oFSO.GetFile(sRegTmp)
aRegFileLines = Split(.OpenAsTextStream(1, 0).Read(.Size), vbcrlf)
End With

oFSO.DeleteFile(sRegTmp)

For Each eRegLine in aRegFileLines
If InStr(1, eRegLine, "[", 1) > 0 Then sRegKey = eRegLine
If InStr(1, eRegLine, sSearchFor, 1) > 0 Then
If sRegKey <> eRegLine Then
.WriteLine(vbcrlf & sRegKey) & vbcrlf & eRegLine
Else
.WriteLine(vbcrlf & sRegKey)
End If
iCnt = iCnt + 1
End If
Next

Erase aRegFileLines

If iCnt < 1 Then
oWS.Popup "Suche beendet nach " & FormatNumber(Timer - StartTime, 0) & " Sekunden." & _
vbcrlf & vbcrlf & "Kein Vorkommen von " & chr(34) & sSearchFor & chr(34) _
,, WScript.ScriptName & " " & Chr(169) & " Sö", 4096
.Close
oFSO.DeleteFile(sOutTmp)
Cleanup()
End If
.Close

End With

oWS.Popup "Suche beendet nach " & FormatNumber(Timer - StartTime, 0) & " Sekunden." & _
vbcrlf & vbcrlf & iCnt & " Vorkommen von" & chr(34) & sSearchFor & chr(34) & _
" gefunden." & vbcrlf & vbcrlf & "Klick OK für die Textdatei.",, _
WScript.ScriptName & " " & Chr(169) & " Sö", 4096

oWS.Run "Wordpad.exe" & sOutTmp, 3, True

oFSO.DeleteFile(sOutTmp)

Cleanup()

Sub Cleanup()
Set oWS = Nothing
Set oFSO = Nothing
WScript.Quit
End Sub
***********************************************************
Die Zeile mit dem Fehler nochmal:
oWS.Run "Wordpad.exe" & sOutTmp, 3, True

Ich vermute, daß es mit dem wordpad zusammenhängt, aber ich weiß nicht weiter.

Danke für alle helfenden Ideen!
Klammi
0 Punkte
Beantwortet von
also das script ansich läuft wunderbar, nur dass eben wordpad oder auch notepad nicht gestartet wird. aber die outputdatei befindet sich im TEMP ordner und kann da weiterbearbeitet werden.

ich vermute, durch irgendein windows update wurde das starten von EXE in vbs unterbunden und muss erst freigeschaltet werden.

LG
0 Punkte
Beantwortet von
ok. fehler gefunden

oWS.Run "Wordpad.exe" & sOutTmp, 3, True


das ergibt dann einen aufruf der so ausschaut:

Wordpad.exec:\temp\sOutTmp2044.tmp"

wie man leicht erkennt, fehlt das leerzeichen zwischen programm und parameter, also musst du die zeile 72 ändern und ein leerzeichen reinmachen nach dem wordpad.exe:

oWS.Run "Wordpad.exe " & sOutTmp, 3, True

voilá
0 Punkte
Beantwortet von
Danke vielmals, halbsowild!!

Ja, die .tmp-Dateien hatte ich schon im Temp-Ordner gefunden.
Und ja. nach dem Einfügen des Leerzeichens werden jetzt .txt-Dateien statt .tmp-Dateien im Temp-Ordner erstellt.

Aber immer noch öffnet sich kein Wordpadfenster und zeigt mir den Text an, so wie es vor dem Fehler war-

stattdessen wieder eine Fehlermeldung:

regschnueffler.vbs
Zeile: 72
Zeichen: 1
Fehler: Der angegebenen Datei ist keine Anwendung zugeordnet.
Code: 80070483
Quelle: (null)

*********************************************
Wat nu?
...