Entwickler-Ecke

ASP.NET und Web - mit Process.Start() Batchdatei auf Server ausführen


MBGucky - Di 30.03.10 22:54
Titel: mit Process.Start() Batchdatei auf Server ausführen
Hi,

ich soll im Kundenauftrag eine in C# geschriebene .Net-Anwendung von einem Windows Server 2003 auf einen
Windows Server 2008 mit Plesk umziehen. Leider fehlen mir derzeit noch wichtige Grundkenntnisse, um selber
größere C#-Anwendungen zu schreiben. Trotzdem habe ich die meissten Fehler ausmerzen können (hauptsächlich
musste ich Pfade ändern oder Berechtigungen erteilen.)

Doch nun scheitert es daran, dass mittels Process.Start() eine Batchdatei erstellt und ausgeführt werden soll.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
int laufendezahl = 1234// hab ich jetzt mal hier eingefügt. Eigentlich wird zuvor diese Zahl generiert 
string befehl = "c:\\inetpub\\vhosts\\die-domain\\httpdocs\\unterordner\\Programm.exe -Parameter1 -Parameter2 -Parameter3 c:\\pfad\\zur\\quelldatei\\datei" + laufendezahl + ".typ c:\\pfad\\zur\\zieldatei\\datei" + laufendezahl +".typ\r\n" +
"c:\\inetpub\\vhosts\\die-domain\\httpdocs\\unterordner\\Programm.exe -Parameter1 -Parameter2 -Parameter3 c:\\pfad\\zur\\quelldatei\\dateizwo" + laufendezahl + ".typ c:\\pfad\\zur\\zieldatei\\dateizwo" + laufendezahl +".typ";
string batchfile = "c:\\pfad\\zum\\batchfile\\batch" + laufendezahl + ".bat";

File.WriteAllText(batchfile,befehl);
Process crypt = Process.Start(batchfile);
while (!crypt.HasExited)
{
}


Dieser Code funktioniert auf dem alten Server ohne Probleme. Auf dem neuen Server wird das Batchfile einfach nicht ausgeführt.
Wenn ich den Exit-Code abfrage, lautet dieser "1" (wenn ich recht informiert bin, steht 1 für false bzw. nicht ausgeführt)

Ich erhalte keinerlei Fehlermeldung. Der Rest des Programms läuft ohne Probleme. Ich erhalte auch keinen Eintrag in der
Ereignissanzeige.
Ein Fehler an der Batchdatei liegt nicht vor. Ich kann diese per RemoteDesktop auf dem Server ausführen und sie macht
dann genau das, was sie machen soll.



Noch ein wenig zur Funktionsweise des Programms:

vorgesehen ist, dass ein Clientprogramm auf den Server zugreift und nach einigen Angaben die verschlüsselte Datei
(=zieldatei) herunterladen kann.
Dies kann ich auf dem Server via Remotedesktop simulieren, indem ich auf dem Server den Browser öffne, die
URL zu dem Serverprogramm aufrufe. Das Ergebnis bekomme ich dann als xml angezeigt (die laufende Nummer und ein paar
Statuscodes. Diese Daten braucht das Clientprogramm, um die Datei herunterzuladen). Dieses Ergebnis wird mit auch
tatsächlich angezeigt. Das Programm arbeitet also einwandfrei, bis auf das Problem mit dem Batchfile, denn die
Zieldatei existiert nicht. Sie existiert aber, wenn ich das Batchfile via RemoteDesktop per Doppelklick aufrufe.



Folgendes habe ich schon (erfolglos) versucht:




Vielleicht hat hier jemand eine Idee, wie ich das noch ans Laufen kriegen könnte.
Es handelt sich um einen "nagelneuen" CloudServer mit Windows 2008 Server und Plesk 9.0