Jump to content

VBS Script - Fehlermeldung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo

 

ich kann auf meinen Winxp sp2 kein VBS-Script ausführen ich bekomme immer folgende Fehlermeldung, "Auf das angegebene Gerät bzw. Pfad oder Datei kann nicht zugegriffen werden. Sie verfügen eventuell nicht über ausreichende Berechtigungen, um auf das Element zugreifen zu können."

 

Ich bin als lokaler Admin angemeldet, auch ein klick mit der rechten Maustaste um das Script zu ändern geht nicht, es kommt der gleiche Fehler.

 

Kann da jemand helfen?

 

Der PC ist nicht in einer Domäne.

Link zu diesem Kommentar

Hallo

 

danke erstmal für die Antworten, das mit dem Script hat sich erledigt das hatte ich aus dem Internet das schien wohl irgendeinen Fehler zu haben.

 

Nun habe ich ein anderes Problem, vielleicht könnt ihr mir dabei helfen.

Ich habe hier ein Script was Funktioniert, doch es startet mir ein Programm zu schnell auf nach dem Standbymodus. Nun wollte ich eine Wscript.sleep einbauen doch das klappt irgendwie nicht.

Ich will ganz ehrlich sein, ich weiss auch garnicht genau wie das Script funktioniert, vielleicht kann es mir von euch einer mal beschreiben.

Wofür steht z.B. das Case 4 und wozu ist der Loop am Ende?

Wenn ich zum Beispiel bei Case 4, Case 1 eingebe dann startet der Calc(Calculator) nicht mehr.

 

 

strComputer = "A31002D"
strProcess = "calc.exe"

Set oShell = CreateObject("WScript.Shell") 

Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("Select * from Win32_PowerManagementEvent") 

Do
Set objLatestEvent = colMonitoredEvents.NextEvent 

Set objWMIService = GetObject("winmgmts:" _ 
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colProcesses = objWMIService.ExecQuery _ 
  ("Select * from Win32_Process Where Name = '" & strProcess & "'")



 If colProcesses.Count = 0 Then

  Select Case objLatestEvent.EventType  

   Case 4
    oShell.Run """c:\windows\system32\calc.exe""", 1, False

  End Select

 Else
   MsgBox "wird ausgeführt !"

End If

Loop

Link zu diesem Kommentar

Moin,

 

Nun habe ich ein anderes Problem, vielleicht könnt ihr mir dabei helfen.

 

gern. Aber bitte öffne für neue Probleme bzw. Fragen in Zukunft bitte einen neuen Thread.

 

Ich habe hier ein Script was Funktioniert

 

Das ist schön. Noch besser wäre es aber, wenn du beschreibst, was du eigentlich vorhast. Sonst müssen wir raten, und das macht die Sache etwas ineffizient.

 

Ich will ganz ehrlich sein, ich weiss auch garnicht genau wie das Script funktioniert

 

Dann ist es mutig, dass du es ausführst ...

 

vielleicht kann es mir von euch einer mal beschreiben.

 

Dein Skript prüft, ob ein bestimmtes Ereignis im Energiemanagement eingetreten ist, und startet in dem Fall das angegebene Programm.

 

Wofür steht z.B. das Case 4 und wozu ist der Loop am Ende?

 

Das Select..Case-Konstrukt ist hier ziemlich unsinnig. Vermutlich ist es übrig geblieben, als ein anderes Skript gekürzt wurde. Mit Select..Case kann man mehrere Bedingungen effizient prüfen. Dein Skript hat aber nur eine Bedingung: Es guckt, ob objLatestEvent.EventType den Wert 4 hat. Das wäre mit einem einfachen If..Then leichter gewesen, geht so aber auch.

 

Das Do..Loop ist die Schleife, durch die das Skript läuft: Bei jedem Durchlauf guckt es, ob der Status eingetreten ist, auf den es reagieren soll.

 

Wenn ich zum Beispiel bei Case 4, Case 1 eingebe dann startet der Calc(Calculator) nicht mehr.

 

Naja, logisch irgendwie, oder? Der Status, den du erwartest, ist 4. Der kommt halt vom System. Wenn du nun einfach die Bedingung änderst, passiert halt nichts.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo

 

vielen Dank für die Hilfe.

Das Script soll ein Programm, nach dem der PC aus dem Standby kommt starten, aber nur wenn das Programm nicht schon gestartet(offen) ist.

 

Ich habe nun das Script abgeändert doch leider habe ich immer noch einige fragen.

Habe mal die fragen bzw. was ich denke was dort passiert Fett dargestellt.

 

 

 

strComputer = "Pc-Sascha"
strProcess = "calc.exe"

Set oShell = CreateObject("WScript.Shell")  
[b]// erstellt eine Wscript.exe[/b]


Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("Select * from Win32_PowerManagementEvent") 
   [b]//was passiert hier ?[/b] 


Do 
[b]//ist für das Loop wo es anfängt[/b]


Set objLatestEvent = colMonitoredEvents.NextEvent
[b]// wenn ich das weglasse und ich schliesse den Calculator dann öffnet er sich neu, aber nur wenn ich das weglasse, wieso?[/b]


Set objWMIService = GetObject("winmgmts:" _ 
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
   [b]//was passiert hier ?[/b]


Set colProcesses = objWMIService.ExecQuery _ 
  ("Select * from Win32_Process Where Name = '" & strProcess & "'")
   [b]//was passiert hier ?[/b]


 If colProcesses.Count = 0 Then

   wscript.sleep 15000
    oShell.Run """c:\windows\system32\calc.exe""", 1, False

 Else
   MsgBox objLatestEvent.EventType

End If

Loop

Link zu diesem Kommentar

Moin,

 

wir können auf deine Fragen Antwort geben, aber ganz ehrlich: Sinnvoller ist es, wenn du dir in Ruhe Grundlagen in Scripting und in WMI erarbeitest.

 

Du hast das Skript jetzt in einer Weise geändert, die für mich keinen Sinn ergibt.

 

Set oShell = CreateObject("WScript.Shell")

// erstellt eine Wscript.exe

 

Nein, dadurch bekommt das Skript Zugriff auf die Shell-Umgebung.

 

Set colMonitoredEvents = GetObject("winmgmts:")._

ExecNotificationQuery("Select * from Win32_PowerManagementEvent")

//was passiert hier ?

 

Hier wird eine WMI-Anfrage an den lokalen Provider für das Energiemanagement gestellt.

 

Set objLatestEvent = colMonitoredEvents.NextEvent

// wenn ich das weglasse und ich schliesse den Calculator dann öffnet er sich neu, aber nur wenn ich das weglasse, wieso?

 

Kann ich nicht ganz nachvollziehen.

 

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

//was passiert hier ?

 

Du stzellst eine WMI-Verbindung zu deinem Rechner her. Unnötig, du hast ja schon eine. Offenbar enstanden durch Zusammenkopieren aus verschiedenen Skripts.

 

Set colProcesses = objWMIService.ExecQuery _

("Select * from Win32_Process Where Name = '" & strProcess & "'")

//was passiert hier ?

 

Hier fragst du alle Prozesse ab, die "calc.exe" heißen.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo

 

ich habe das Script jetzt versucht zu modifizieren, doch ich weiss nicht wie man es noch einfacher machen kann, soll.

Die Funktion des Scripts:

Wenn der PC aus dem StandBy kommt soll geprüft werden ob das Programm calc.exe gestartet ist, wenn die calc.exe gestartet ist soll das Script nichts machen, wenn die calc.exe nicht gestartet ist soll das script die calc.exe starten.

Da das Script ja immer läuft, muss auch noch gefärleistet sein, wenn ich das Programm von Hand beende, das es von dem Script nur dann geöffnet wird wenn der PC wieder aus dem StandBy kommt.

Hier das script.

 

strComputer = "Computername"
strProcess = "calc.exe"

Set oShell = CreateObject("WScript.Shell") 



Set colMonitoredEvents = GetObject("winmgmts:")._
ExecNotificationQuery("Select * from Win32_PowerManagementEvent") 

do

Set objWMIService = GetObject("winmgmts:" _ 
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colProcesses = objWMIService.ExecQuery _ 
  ("Select * from Win32_Process Where Name = '" & strProcess & "'")


if colMonitoredEvents.NextEvent.EventType = 7 Then

 if  colProcesses.Count = 0 Then

   Wscript.Sleep 5000
   oShell.Run """c:\windows\system32\calc.exe""", 1, False

 Else
  MsgBox "programm ist gestartet"
 End If


End If

Loop

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...