johndorian
Goto Top

Batch in HKCU...RunOnce läuft nicht

Hallo Kollegen,

ich möchte eine Batchdatei per HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce starten. Das anlegen des Schlüssels ist mir prima gelungen, nur läuft die Batchdatei nicht los. Ich habe zur Überprüfung eine Pause in die Batch eingebaut, dann müsste ich ja sehen wenn sie darauf stehen bleibt. Ich seh aber nüscht!

Wer weiß was?

Gruß, J.D.

Content-Key: 208311

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

Printed on: April 25, 2024 at 02:04 o'clock

Member: AndreasHoster
AndreasHoster Jun 19, 2013 at 15:43:39 (UTC)
Goto Top
Und was steht in dem Schlüssel drin? Muß Windows auch raten wie wir?
Und mich interessiert nicht, was da reinsoll, sondern was tatsächlich drin ist, also mit regedit einen Export von RunOnce machen und das dann posten.
Erste Vermutung:
Der Eintrag ist nicht korrekt.
Member: Pjordorf
Pjordorf Jun 19, 2013 at 17:21:05 (UTC)
Goto Top
Hallo,

Zitat von @AndreasHoster:
Muß Windows auch raten wie wir?
Windows ist doch allwissend, oder etwa nicht?face-smile

Der Eintrag ist nicht korrekt.
Oder in der Batchdatei ist es nicht so wie es sich dort gehört. Wer weiß das hier schon...

Gruß,
Peter
Member: rubberman
rubberman Jun 19, 2013 updated at 20:27:23 (UTC)
Goto Top
Hallo JohnDorian,

angenommen dein Batch hat den Name "Mein Batch.bat" und liegt auf deinem Desktop, dann nimm den Registryeintrag mal mit folgendem Code vor:
@echo off &setlocal
set "valname=Mein Batch im RunOnce"  
set "batpath=%userprofile%\Desktop\Mein Batch.bat"  

setlocal EnableDelayedExpansion
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "!valname!" /t REG_SZ /d "\"!comspec!\" /c \"!batpath!\"" /f  
endlocal

Grüße
rubberman
Member: JohnDorian
JohnDorian Jun 20, 2013 at 05:36:59 (UTC)
Goto Top
Hallo und Danke für alle Antworten,

ich hab das Problem inzwischen gelöst, ich rufe über RunOnce keine Batch mehr auf sondern cmd /c [vba-script, welches ausgeführt werden soll]


Danke,

J.D.
Member: rubberman
rubberman Jun 20, 2013 updated at 16:45:36 (UTC)
Goto Top
2 Tipps:

1.) cmd /c findet sich selten bis gar nicht in der Registry. Im Regelfall wird der gesamte Pfad zum ausführenden Programm angegeben. Weder weißt du was der User in seiner Path-Umgebung hat, noch möchtest du dass die gesamte Umgebung nach der cmd.exe durchsucht wird solange Windows noch hochgradig beschäftigt ist das Benutzerprofil fertig zu laden oder Services/Autorunprogramme auszuführen.

2.) Wenn du mit "vba-script" ein VBScript meinst, dann weiß ich nicht was die cmd.exe dort zu suchen hat. Funktioniert zwar, aber *.vbs Dateien werden in wscript.exe (ggf. cscript.exe falls das Consolefenster benötigt werden sollte) ausgeführt. Macht also eigentlich keinen Sinn den Umweg zu gehen und die Console aufblitzen zu lassen.

Grüße
rubberman
Member: Biber
Biber Jun 20, 2013 at 17:42:18 (UTC)
Goto Top
Moin rubberman,

zu dem Punkt "1.) cmd /c findet sich selten bis gar nicht in der Registry. "

Ja. Aber wozu sollte jemand auch nach "cmd /c" suchen?
Der CMD-Interpreter steht ja nun in der Variablen %COMSPEC%.

Wenn die nicht wie im obigen Beispiel vorauseilend aufgelöst werden würde nach dem Motto "Da, wo der Batch läuft, gilt sicherlich dieselbe Windowsverzeichnisstruktur wie auf meinem Hobel" --> dann doch lieber %comspec% nicht auflösen.

Dat geiht auch, allerdings muss dafür der Datentyp des Registryeintrags (korrekt) als REG_EXPAND_SZ statt REG_SZ angegeben werden und die Variable %comspec% mit Carets übergeben werden.

reg add .... /t REG_EXPAND_SZ /d "\"^%comspec^%..........\""

Grüße
Biber
Member: rubberman
rubberman Jun 20, 2013 updated at 18:29:06 (UTC)
Goto Top
Hallo Biber.

Ja. Aber wozu sollte jemand auch nach "cmd /c" suchen?
Der CMD-Interpreter steht ja nun in der Variablen %COMSPEC%.
Ja klar, so aber nicht bei JohnDorian (auch wenn ich's anders vorgeturnt habe).

Trotzdem hast du mich erwischt face-wink
Die Variable nicht aufzulösen macht allerdings mehr Sinn. Für wscript dann entsprechend
%SystemRoot%\system32\wscript.exe
Für das Erstellen aus der Kommandozeile oder Batch entsprechend ^% bzw. %% maskiert, versteht sich.

Grüße
rubberman
Member: JohnDorian
JohnDorian Jun 26, 2013 at 06:37:01 (UTC)
Goto Top
Hallo Biber und rubberman,

Danke für die Tips!

Ciao,

JD