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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 208311
Url: https://administrator.de/forum/batch-in-hkcu-runonce-laeuft-nicht-208311.html
Ausgedruckt am: 05.04.2025 um 02:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Windows ist doch allwissend, oder etwa nicht?
Gruß,
Peter
Windows ist doch allwissend, oder etwa nicht?
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
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:
Grüße
rubberman
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
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
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
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
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
Hallo Biber.
Trotzdem hast du mich erwischt
Die Variable nicht aufzulösen macht allerdings mehr Sinn. Für wscript dann entsprechend
Für das Erstellen aus der Kommandozeile oder Batch entsprechend
Grüße
rubberman
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).Der CMD-Interpreter steht ja nun in der Variablen %COMSPEC%.
Trotzdem hast du mich erwischt
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