Process.Start找不到文件?

问题描述

我正在做一个助手,我希望它打开应用程序。它只会打开某些应用程序,例如chrome.exe(Chrome)和devenv.exe(Visual Studio)。

我还有4个应用程序,分别是Spotify.exe(Spotify),discord.exe(discord),obs64.exe(OBS Studio)和Steam.exe(Steam)。当我告诉助手打开该特定应用程序时出现错误

“ System.ComponentModel.Win32Exception:'系统找不到指定的文件'”。

对于所有这些应用程序,错误都是相同的。这是我的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.Speech.Recognition;
using System.Media;
using System.Diagnostics;

namespace Assistant
{
    public partial class Form1 : Form
    {
        SpeechSynthesizer ZeroTwo;
        SpeechRecognitionEngine ZeroTwoears;
        Soundplayer ZeroTwoGreeting;
        Grammar ZeroTwoGrammar;

        bool ZeroTwoSearch = false;

        public Form1()
        {
            InitializeComponent();

            // Sound player

            ZeroTwoGreeting = new Soundplayer(@"c:/Users/User/Desktop/Zero Two Sound Files/dahling ohaio.wav");

            // Speech Synthesizer

            ZeroTwo = new SpeechSynthesizer();      

            // Speech Recognition

            ZeroTwoears = new SpeechRecognitionEngine();
            Choices list = new Choices();

            list.Add(new string[] { 

                // Greetings

                "Ohaio,zero two",// Google search

                "Zero two,search for",// Open apps

                "Zero two,open discord","Zero two,open google",open visual studio",open spotify",open steam",open obs"
            } );

            ZeroTwoGrammar = new Grammar(new GrammarBuilder(list));

            try
            {

                ZeroTwoears.RequestRecognizerUpdate();

                ZeroTwoears.LoadGrammar(ZeroTwoGrammar);

                ZeroTwoears.SpeechRecognized += ZeroTwoears_SpeechRecognized;

                ZeroTwoears.SetInputToDefaultAudioDevice();

                ZeroTwoears.RecognizeAsync(RecognizeMode.Multiple);

            }
            catch { }

        }
        private void ZeroTwoears_SpeechRecognized(object sender,SpeechRecognizedEventArgs e)
        {
            String ZamdiesLines = e.Result.Text;
            button1.Text = ZamdiesLines;

            if (ZeroTwoSearch == true)
            {
                ZeroTwoGreeting.Play();
                Process.Start("https://www.google.com/search?q=" + ZamdiesLines);
                button1.Text = "Searched!";
                ZeroTwoSearch = false;
            }

            if (ZamdiesLines == "Zero two,search for")
            {
                ZeroTwoSearch = true;
                ZeroTwoGreeting.Play();
                button1.Text = "fired!";
            }

            if (ZeroTwoSearch == false)
            {
                switch (ZamdiesLines)
                {


                    case ("Ohaio,zero two"):
                        ZeroTwoGreeting.Play();
                        break;


                    case ("Zero two,open discord"):
                        ZeroTwoGreeting.Play();
                        Process.Start("discord.exe");
                        break;


                    case ("Zero two,open google"):
                        ZeroTwoGreeting.Play();
                        Process.Start("chrome.exe");
                        break;


                    case ("Zero two,open visual studio"):
                        ZeroTwoGreeting.Play();
                        Process.Start("devenv.exe");
                        break;


                    case ("Zero two,open spotify"):
                        ZeroTwoGreeting.Play();
                        Process.Start("Spotify.exe");
                        break;


                    case ("Zero two,open steam"):
                        ZeroTwoGreeting.Play();
                        Process.Start("Steam.exe");
                        break;


                    case ("Zero two,open obs"):
                        ZeroTwoGreeting.Play();
                        Process.Start("obs64.exe");
                        break;
                }
            }
        }
    }
}

解决方法

Chrome.exe和Devenv.exe自动运行的原因是,这两个应用程序的路径(它们所在的文件夹)都在系统Path环境变量中声明。 有两种解决方案。

  1. 您必须通过设置Discoord.exe应用程序的完整路径来调用它,例如:

    Process.Start(“ C:\\ Users \\ AppData \\ Local \\ Discord \\ app-0.0.307 \\ Discord.exe”);

  2. 在计算机系统中设置环境路径。看下面的屏幕截图:

enter image description here