如何仅从文件的名称中检索路径
本文关键字:检索 路径 何仅 文件 | 更新日期: 2023-09-27 18:18:44
我正在寻找一种在不知道文件位置的情况下检索文件路径的方法。
我开发了一个c#应用程序,它可以启动VLC流视频,我正在努力改进它。
实际上,我像这样直接传输vcl .exe的路径:
ProcessStartInfo processInfo
= new ProcessStartInfo(@"C:'Program Files (x86)'VideoLAN'VLC'vlc.exe", adr);
但是如果。exe不在这里,它不工作(正常)。
所以,我想发现vcl .exe的路径,独立于系统。
通过我的研究,我找到了检索当前路径或解析带有目录的路径的函数,但没有关于我的问题。
编辑:我尝试了这些解决方法,但都不成功。
例如,如果客户端安装了VLC(或其他文件)在D:'Tools' VLC .exe
如何获取vcl .exe的路径?
困难的方法是遍历每个驱动器上的每个目录并查找该文件。不推荐,除非你想花很多时间搜索。
更简单的方法是查看VLC安装的注册表。卸载信息应该包含路径,就像VLC自己的一些密钥一样。
我的想法是:
string[] paths = Directory.GetFiles("your path where u want to search", "name of file", SearchOption.AllDirectories);
如果你在其他目录中有相同的文件,你可以在这个数组中搜索唯一的文件。
string[] endpaths = paths.Where(x => Path.GetFullPath(x).Contains("Your unique name or folder in path")).Select(x => Path.GetFullPath(x)).ToArray();
之后你可以有唯一的文件
这应该可以工作,但可能不是那么有效
var filePath = Directory
.EnumerateFiles("C:''", "*", SearchOption.AllDirectories)
.First(x => Path.GetFileName(x) == "vlc.exe");
您可以使用Environment.SpecialFolder
enum在运行软件的机器上检索程序的安装路径,例如根据体系结构以以下方式之一:
string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
或
string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
然后使用Path.Combine
,您可以附加后缀:"'VideoLAN'VLC' VLC .exe"
您仍然需要检查文件是否存在File.Exists
,以便在尝试运行它之前保持安全。
在Windows中安装的应用程序通常会在注册表中记录安装路径,您可以尝试查看vlc是否也这样做并从注册表项中检索路径,这是因为有人可能在安装时仍然决定使用不同的路径/文件夹名称,有点不寻常,但您永远不会知道。