Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在其他计算机上运行此代码(相对路径c#wpf)_C#_Wpf_Path - Fatal编程技术网

如何在其他计算机上运行此代码(相对路径c#wpf)

如何在其他计算机上运行此代码(相对路径c#wpf),c#,wpf,path,C#,Wpf,Path,如何在其他计算机上运行此功能?我已经尝试了使用相对路径c#wpf的所有方法,并检查了stackoverflow上的其他帖子,但没有任何运气,它仍然找不到该文件 对不起,英语不好 using System.Diagnostics private void btnDiscord_Click(object sender, RoutedEventArgs e) { try { Process p = new Process();

如何在其他计算机上运行此功能?我已经尝试了使用相对路径c#wpf的所有方法,并检查了stackoverflow上的其他帖子,但没有任何运气,它仍然找不到该文件

对不起,英语不好

using System.Diagnostics

private void btnDiscord_Click(object sender, RoutedEventArgs e)
{
        try
        {
            Process p = new Process();
            p.StartInfo = new ProcessStartInfo("C:\\Users\\morten\\AppData\\Local\\Discord\\app- 
            0.0.306\\Discord.exe");
            p.Start();
        }
        catch
        {
            MessageBox.Show("Discord Not Found");
        }
}

Appdata\Local在Windows系统中被引用为%localappdata%

Appdata\Roaming被引用为%Appdata%

那你必须做什么

using System.Diagnostics
private void btnDiscord_Click(object sender, RoutedEventArgs e)
   {
       try
       {
           Process p = new Process();
           var path= Environment.ExpandEnvironmentVariables("%localappdata%\\Discord\\app- 
           0.0.306\\Discord.exe");
           p.StartInfo = new ProcessStartInfo(path); //work with folders in this way is baaad
           p.Start();
       }
       catch
       {
           MessageBox.Show("Discord Not Found");
       }
   }
我将通过以下方式找到discord应用程序:

  • 我获取了Discord localappdata文件夹(%localappdata%\Discord)
  • 我开始在“Discord.exe”文件的子文件夹中查找,并在找到时中断循环
请注意,这并不意味着你什么都没有。您可以使用旧版本,或者如果他们选择更改exe文件的名称,则找不到任何内容

如果discord子文件夹使用了一种模式(它们现在是这样的……你永远不知道你的应用程序何时会崩溃),你可以执行以下操作:

  • 包含“app”且按字母顺序更大的子文件夹名称

    public string FindDiscordFile() {
       var subfolders = Directory.GetDirectories(Environment.ExpandEnvironmentVariables("%localappdata%\\Discord"));
       var subfolder = subfolders.Where(folder=> folder.StartsWith("app")).Max(folder=> folder);
       return subfolder+"\\Discord.exe";
    }
    

你可以在谷歌上搜索windows“路径”是如何工作的。你不能在
GetDirectories
等方法中直接使用环境变量。你需要将它与
环境相结合。ExpandEnvironmentVariables
@John true,我的错,写得快,不思考,谢谢不用担心!我一直在做:)