Entwickler-Ecke

IO, XML und Registry - Exe Auführen


yndaso - Do 12.03.09 14:26
Titel: Exe Auführen
Hallo zusammen.

ich will aus meine Programm eine ocx Datei mit regsvr32 registrieren.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string regsvr32 = Environment.SystemDirectory + "\\regsvr32.exe";
string test = regsvr32 + " " + "C:\\Programme\\MyPath\\ProcessDisplay.ocx";

                        System.Diagnostics.Process n = new System.Diagnostics.Process();
                        n.StartInfo.FileName = test;
                        MessageBox.Show(n.StartInfo.FileName);
                        n.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                        n.Start();


Es kommt aber immer eine Exception das die Datei nicht gefunden wird. Gebe ich für die Variable Test ein:


C#-Quelltext
1:
string test = "C:\\WINNT\\system32\\regsvr32.exe";                    


so wird das Programm ausgeführt und es erscheint eine Meldung das kein dll name angegeben wurde.
Was auch korrekt ist...

Gebe ich aber in der DOS Box den string test von Hand ein, so funktioniert das registrieren, es erscheint ene Meldung "... erfolgreich abgeschlosssen".

Zu Testzwecken habe ich im Programm noch eine Messagebox eingefügt.
Als Ausgabe erscheint: C:\WINNT\system32\regsvr32.exe C:\Programme\MyPath\ProcessDisplay.ocx
Das passt doch eigentlich. Wieso erscheint dann immer die Exception?

Ich weiß nicht mehr was ich noch machen kann, hat jemand eine Idee?

Danke


bakachan - Do 12.03.09 14:42

Wenn du das in der Eingabeaufforderung eingibst führt er den ersten teil aus und übergibt den zweiten teil als kommandozeilenparameter
und genau das musst du auch machen

also regsvr32 als FileName und "C:\\Programme\\MyPath\\ProcessDisplay.ocx" als Argument in der StartInfo

So müsste es dann gehen


Greenberet - Do 12.03.09 14:47

das problem liegt daran, weil du versuchst "C:\\WINNT\\system32\\regsvr32.exe C:\\Programme\\MyPath\\ProcessDisplay.ocx" als ExePfad angibst. Das System sucht dann natürlich auch nach dieser, nur kann es diese logischerweise nicht finden weil dein Pfad nicht existiert.

Als Pfad musst du "C\\WINNT\system32\\regsvr32.exe" angeben für Parameter/Argumente besitzt die ProcessStartInfo Klasse das "Argument" Property

//edit:
Da war wohl jemand schneller als ich^^


yndaso - Do 12.03.09 15:01

Tausend Dank!
Hab die Erweiterung nun als Argument reingenommen. ES GEHT!

Gruß