Hallo,
ich würde gerne in meinem Programm auf Knopfdruck das Starten von drei Prozessen ermöglichen. Dabei soll der erste Prozess ein Prozess des MySQL Servers sein.
Mein bisherigen Code (wie ich den MySQL Server über eine .bat Datei starten wollte):
//mysql
ProcessStartInfo info1 = new ProcessStartInfo();
//info1.CreateNoWindow = true;
//info1.WindowStyle = ProcessWindowStyle.Hidden;
//info1.UseShellExecute = true;
info1.FileName = "_Server\\MySQL.bat";
Die zugehörige .bat Datei (MySQL.bat), welche nciht von mir stammt, aber bisher immer gut funktionierte:
@echo off
COLOR F
echo MySQL Server
mysql\bin\mysqld --defaults-file=mysql\bin\my.cnf --standalone --console
if errorlevel 1 goto error
goto finish
:error
echo.
echo ERROR: the MySQL service could not be started.
echo Please check if no other MySQL server is running.
pause
:finish
Wenn ich die MySQL.bat normal starte, geht alles wunderbar, aber sobald ich den Prozess, wie oben aus einem C# Programm aufrufe, kommt die Meldung, dass bereits ein mySQL service aktiv wäre. Habe bereits etwas rumprobiert (auch mit ShellExecute etc.), aber nichts hat geholfen.
Wäre klasse, wenn mir jemand bei diesem Problem behiflich sein könnte, bzw. weiß, wodurch diese Problem entsteht.
Achja: Diese Version des MySQL Servers ist portable
MfG
p.s. Das Programm startet an keiner anderen Stelle den MySQL Server
Mit freundlichen Grüßen, Chris
Das könnte an dem working directory liegen. Ich seh spontan mindestens einen relativen Pfad.
Schon mal nachgeschaut ob der Prozess bereits läuft bevor Dein Programm versucht diesen zu starten... und falls er läuft diesen per Hand zu stoppen und dann mal Dein C# Programm starten... gehts es dann?
Ja, ich habe bereits versucht zu schauen, ob vor dem Start des MySQL Servers bereits ein Prozess davon läuft und auch im Programm entsprechende Maßnahmen getroffen, um die Prozesse zu beenden. Die Erkenntnis war, dass sich nichts änderte.
Mit freundlichen Grüßen, Chris
Starte nicht die Batch-Datei direkt, sondern die Kommandozeile cmd mit der Batch als Parameter.
... gemeint ist Process.Start ("cmd.exe", "/c deinebatchdatei.bat");
Danke für alle Antworten, tatsächlich geholfen hat mir der Hinweis mit dem working directory
Das könnte an dem working directory liegen. Ich seh spontan mindestens einen relativen Pfad.
Ich habe das Programm jetzt mal in den "_Server" Ordner verschoben und die MySQL.bat daraus gestartet - siehe da, es funktioniert.
Damit wäre das Problem behoben.
MfG
Mit freundlichen Grüßen, Chris
Hallo Chrisexpress,
es hätte auch gereicht die ProcessStartInfo.WorkingDirectory-Eigenschaft passend zu setzen...