не удается запустить стороннее приложение кодом 'process.Start();'

есть консольное приложение которое при получении команды "2 reload" из сети закрывает процесс "server1" после должен запустить процесс но тут загвоздка
процес не запускается при этом сервер отключает клиента чего быть не должно
вот часть кода

public async Task ProcessAsync()
{
    try
    {

        while (true)
        {
        
            try
            {
                message = await Reader.ReadLineAsync(); // получаем сообщение


                if (userName == admin_name)
                {

                    // reload
                    if (message == "1 reload")
                    {
                        foreach (var process in Process.GetProcessesByName("Server1")) // закрываем процесс
                        {
                            process.Kill();
                        }

                        System.Threading.Thread.Sleep(500); //0.5 sec delay

                        Process process1 = new Process();  // запускаем процесс
                        process1.StartInfo.FileName = "C:\\Users\\1\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\1.lnk"; // замените на путь к исполняемому файлу, который вы хотите запустить
                        process1.Start();

                        string processName1 = "BeamMP-Server1"; // процесс который вы хотите проверить
                        Process[] processes1 = Process.GetProcessesByName(processName1);

                        if (processes1.Length > 0)
                        {
                            await server.BroadcastMessageAsync("Сервер 1 запущен\n", Id);
                            Console.Write(DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"to {userName}: Сервер 1 запущен\n");
                        }
                        else
                        {
                            await server.BroadcastMessageAsync("Сервер 1 не удалось запустить\n", Id);
                            Console.Write(DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"to {userName}: Сервер 1 не удалось запустить\n");
                        }
                    }
                    else if (message == "2 reload")
                    {
                        foreach (var process in Process.GetProcessesByName("Server2")) // закрываем процесс
                        {
                            process.Kill();
                        }

                        System.Threading.Thread.Sleep(500); //0.5 sec delay


                        Process process1 = new Process();  // запускаем процесс
                        process1.StartInfo.FileName = "C:\\Users\\1\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\2.lnk"; // замените на путь к исполняемому файлу, который вы хотите запустить
                        process1.Start();


                        string processName2 = "BeamMP-Server2"; // замените на имя процесса, который вы хотите проверить
                        Process[] processes2 = Process.GetProcessesByName(processName2);

                        if (processes2.Length > 0)
                        {
                            await server.BroadcastMessageAsync("Сервер 2 запущен\n", Id);
                            Console.Write(DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"to {userName}: Сервер 2 запущен\n");
                        }
                        else
                        {
                            await server.BroadcastMessageAsync("Сервер 2 не удалось запустить\n", Id);
                            Console.Write(DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"to {userName}: Сервер 2 не удалось запустить\n");
                        }
                    }
                    
                    
                    

                }

                if (message == null) continue;
                message = DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"{userName}: {message}";
                Console.WriteLine(message);
            }
            catch
            {
                message = DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + $"{userName} отключился\n";
                Console.WriteLine(DateTime.Now.ToString("[dd:MM:yy HH:mm:ss]") + " " + message);
                break;
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
    finally
    {
        // в случае выхода из цикла закрываем ресурсы
        server.RemoveConnection(Id);
    }
}

С# windows
в visual studio 2022
.NET 8.0

вот ошибка

An error occurred trying to start process 'C:\Users\1\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\2.lnk' with working directory 'C:\Users\1\Desktop\server contol(server side)'. The specified executable is not a valid application for this OS platform.

и насколько я понял прога не запускается из-за того что пытается запустить ее с рабочим каталогом 'C:\Users\1\Desktop\server contol(server side)' верно?


Ответы (1 шт):

Автор решения: Qwertiy

Ярлык - это вообще не исполняемый файл.

Надо писать нормальный путь к файлу.

Ну или ставить UseShellExecute true.

→ Ссылка