Laden...

Anwendung über C#-exe starten funktioniert, über Verknüpfing nicht

Erstellt von LittleTester vor einem Jahr Letzter Beitrag vor einem Jahr 585 Views
L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr
Anwendung über C#-exe starten funktioniert, über Verknüpfing nicht

Ich habe mir ein kleines Tool geschrieben mit dem ich verschiedene cmd-Dateien als Administrator aufrufen kann.
Solange ich die exe aus dem gleichen Verzeichnis starte wo auch die cmd-Dateien liegen funktioniert es. Verwende ich aber die Verknüpfung zur exe werden die cmd-Dateien nicht mehr gefunden. Ich muss die cmd-Dateien dann in das gleiche Verzeichnis wie die Verknüpfung legen. Dann klappt es wieder.

Ich verstehe das nicht. Eine Verknüpfung ist doch nur ein Verweis auf die exe die gestartet wird. Was läuft falsch?


string fileName;
private void BtnMicrosoftSurface_Click(object sender, EventArgs e)
{
    try
    {
        fileName = Path.GetFileName("InstallSurface.cmd");
        Process proc = new Process();
        proc.StartInfo.FileName = fileName;
        proc.StartInfo.UseShellExecute = true;
        proc.StartInfo.Verb = "runas";
        proc.Start();
        Close();
    }
    catch (Exception)
    {
        MessageBox.Show("Datei \"InstallSurface.cmd\" nicht gefunden.", "Fehler",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr

Danke Abt. Du hast mir zwar jetzt den Weg Richtung Lösung gezeigt, aber warum das so ist habe ich trotzdem nicht verstanden.
Ich nutze doch nur eine Abkürzung um die exe aus zu führen und trotzdem ist ein Workingdir notwendig? Was passiert da im Hintergrund?

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

J
251 Beiträge seit 2012
vor einem Jahr

Tippe, dass der Name der Verknüpfung nicht "InstallSurface.cmd" ist sondern eher "InstallSurface.lnk" o.ä.

187 Beiträge seit 2009
vor einem Jahr

Ich nutze doch nur eine Abkürzung um die exe aus zu führen und trotzdem ist ein Workingdir notwendig? Was passiert da im Hintergrund?

Die Antwort hast Du Dir doch im Eingangspost schon selber gegeben! Deine Exe findet doch auch die Dateien nicht selber, wenn sie in einem anderen Ordner als die CMD-Dateien liegt.
Vereinfacht gesagt, ist der Arbeitsordner immer der Ordner, in dem das Programm gestartet wird, wenn nichts anderes angegeben wird. In Deinem Fall mit der Verknüpfung wird das Programm halt dann wahrscheinlich vom Desktop getsartet und der Arbeitsordner ist eben der Desktop.

16.835 Beiträge seit 2008
vor einem Jahr

Das ist eine Funktionsweise von Betriebssystemen mit ihrem Dateisystem
Working directory

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor einem Jahr

Wollte mich noch für die Erklärungen bedanken. Hatte sie unterwegs gelesen und dann zu Hause vergessen zu reagieren.

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6