使用Process.Start打开资源管理器

时间:2019-12-11 19:56:40

标签: c# explorer

编辑:找到解决方案,将在问题末尾的图像下方注明

在SO上进行了大量研究之后,我发现使用选定文件打开资源管理器的方式是:

Process.Start("explorer.exe", "/select, " + path);

但是,当我使用受控输入来执行此操作时,资源管理器仅打开其主窗口,但是当我将函数调用编码为path变量中的相同值时(在我的控件中测试其在C:\ Temp中的文本文件)有用。因此,如果我在路径为“ C:\ Temp \ test.txt”时执行上述操作,则不会在temp文件夹中打开资源管理器,但是当我这样做时:

Process.Start("explorer.exe", "/select, C:\\Temp\\test.txt");

它完美运行,打开资源管理器并突出显示该文件。这是怎么回事我的字符串变量的内部格式有问题吗?

(此外,我使用path变量打开FileInfo时遇到了同样的问题。将其硬编码为相同的值是可以的,但是使用该变量给了我一个“不支持给定路径格式的异常”)

图像显示路径和编码值相同: Image showing that path and the harcoded value are the same

2个浏览器窗口(为安全性而裁剪)是2个相应调用的结果。带有变量的那个显示基本的资源管理器主页。经过硬编码的文件将按预期显示选择的文件。

编辑:在字符串的前面隐藏了一个从左到右的隐藏格式字符。

1 个答案:

答案 0 :(得分:1)

    public static class Program
    {
        static void Main()
        {
            Explore("C:\\Users\\art_g\\Desktop\\Sample.txt");
        }
        static void Explore(string path) =>
            Process.Start("explorer.exe", "/select, " + path);
    }

像魅力一样工作。检查您的路径字符串。