繁体   English   中英

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

[英]Using Process.Start to open explorer

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

在对 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 个相应调用的结果。 带有变量的那个显示了基本的资源管理器主页。 硬编码的文件显示按预期选择的文件。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM