Announcement

Collapse
No announcement yet.

Process.Start findet Datei nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Process.Start findet Datei nicht

    Hallo,

    Ich habe einen simplen Launcher mit Visual C# .NET gemacht und lokal getestet.
    Wenn ich auf einen Button klicke öffnet er das Programm, was er öffnen soll.

    Jetzt habe ich das Build erstellt und die .exe auf den Terminal-Server kopiert. Dort sagt er mir bei Klick auf den Button, dass er die Datei nicht finden kann?!
    Die Datei ist natürlich wirklich vorhanden. Wenn ich den Pfad in den Explorer eingebe, sehe ich diese!
    Tippfehler ausgeschlossen, da ich den kompletten Pfad aus dem Ziel einer Verknüpfung heraus kopiert habe.

    Einzige Besonderheit: Ich übergebe Parameter an die Datei, die geöffnet werden soll.
    Dies habe ich über ProcessStartInfo.Arguments gemacht:
    Code:
    ProcessStartInfo pAbf = new ProcessStartInfo();
    pAbf.FileName = @"C:\Program Files (x86)\Sage\Office Line\6.2\Shared\OLStart.exe";
    pAbf.Arguments = "/APP ABF /EXCL /DB ADE /VER 6.2";
    Process.Start( pAbf );
    Wie gesagt, die OLStart.exe ist definitiv vorhanden und die Argumente sind dieselben, die auch die Standard-Verknüpfung verwendet und da funktioniert es.
    Vielleicht kann mir ja jemand sagen, wo mein Gedankenfehler liegt?

    Vielen Dank!
    Gruß Arne


    Der Vollständigkeit halber hier die Ausnahme-Meldung:
    Code:
    ************** Ausnahmetext **************
    System.ComponentModel.Win32Exception (0x80004005): Das System kann die angegebene Datei nicht finden
       bei System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
       bei System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
       bei OfficeLineLauncher.Form1.button1_Click(Object sender, EventArgs e)
       bei System.Windows.Forms.Control.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       bei System.Windows.Forms.Control.WndProc(Message& m)
       bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
       bei System.Windows.Forms.Button.WndProc(Message& m)
       bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    PHP rocks!
    Eine Initiative der PHP Community

  • #2
    Sorry, Lösung gefunden!

    Entschuldigung, habe gerade die Lösung entdeckt:
    Code:
    string sPath = @"C:\Program Files (x86)\Sage\Office Line\6.2\Shared\OLStart.exe";
    
    
    ProcessStartInfo pAbf = new ProcessStartInfo();
    pAbf.FileName = Path.GetFileName(sPath);
    pAbf.WorkingDirectory = Path.GetDirectoryName(sPath);
    pAbf.Arguments = "/APP ABF /EXCL /DB ADE /VER 6.2";
    
    
    Process.Start( pAbf );
    Über WorkingDirectory der StartFileInfo funktioniert es. FileName kann wohl nichts mit dem Pfad anfangen.
    PHP rocks!
    Eine Initiative der PHP Community

    Comment


    • #3
      Ich vermute mal das OLStart eher bescheiden programmiert ist. Der über Process.Start gestartete Prozess ~erbt~ die WorkingDirectory vom startenden Prozess. In deiner ersten Variante war der nicht explizit gesetzt also hatte OLStart erstmal das gleiche Arbeitsverzeichnis benutzt wie dein Prozess und da hat dann OLStart seine eigenen Abhängigkeiten die vermutlich im gleichen Ordner wie es selbst liegen bzw. irgendwo relativ dazu nicht mehr gefunden. Aka OLStart konnte noch gestartet werden ist dann aber am laden der eigenen Abhängigkeiten gescheitert und hat dir diesen Fehler weitergemeldet. Es war also nicht OLStart gemeint sondern eine Abhängigkeit (vermutlich eine dll) von OLStart.

      Das kannst du aber ganz leicht selbst ausprobieren. Geh in einer Konsole in das Programverzeichnis deines Programms und versuche von da aus mit dem gesamten Pfad die OLStart auszuführen wenn die sich auch von dort mit einem 0x80004005 verabschiedet ist die einfach schlecht programmiert.

      Comment


      • #4
        Danke für den Hinweis.
        Habs noch nicht getestet, aber ich könnte mir vorstellen, dass Du recht hast. Es handelt sich um das Startprogramm der Sage OfficeLine.
        Da ist nicht alles sooo sauber entwickelt.
        PHP rocks!
        Eine Initiative der PHP Community

        Comment

        Working...
        X