0

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

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

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

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

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

它完美地工作,打开资源管理器并突出显示文件。这里发生了什么?我的字符串变量的内部格式有什么问题吗?

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

显示该路径和硬编码值的图像是相同的: 显示路径和硬编码值相同的图像

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

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

4

1 回答 1

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);
    }

奇迹般有效。检查您的路径字符串。

于 2019-12-11T20:39:21.067 回答