如何仅从文件名中检索路径?

时间:2014-08-20 09:49:47

标签: c#

我正在寻找一种方法来检索文件的路径,而不知道他的位置。

我开发了一个C#应用程序,它启动了VLC以流式传输视频,我试图改进它。

确实,我像这样直接传输vlc.exe的路径:

ProcessStartInfo processInfo
    = new ProcessStartInfo(@"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe", adr);

但如果.exe不在这里,它就不起作用(正常)。

所以,我想发现vlc.exe的路径,与系统无关。

通过我的研究,我发现函数可以检索当前路径或解析带有目录的路径,但没有关于我的问题。

编辑:

我试过这些解决方案但没有成功。

例如,如果客户端在D:\ Tools \ vlc.exe中安装了VLC(或其他文件)

如何检索vlc.exe的路径?

4 个答案:

答案 0 :(得分:1)

困难的方法是遍历每个驱动器上的每个目录并查找该文件。不推荐,除非你想花很多时间搜索。

更简单的方法是查看安装了VLC的注册表。卸载信息应该具有路径,可能还有一些VLC自己的密钥。

答案 1 :(得分:1)

这是我的想法:

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

之后你可以拥有独特的文件。

答案 2 :(得分:0)

这应该有效,但可能不会那么有效

var filePath = Directory
             .EnumerateFiles("C:\\", "*", SearchOption.AllDirectories)
             .First(x => Path.GetFileName(x) == "vlc.exe");

答案 3 :(得分:0)

您可以使用Environment.SpecialFolder枚举来检索运行该软件的计算机上程序的安装路径,例如,根据架构,可以采用以下方式之一:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

然后使用Path.Combine您可以附加后缀:“\ VideoLAN \ VLC \ vlc.exe”

在尝试运行文件之前,您仍然需要检查文件是否存在且File.Exists是安全的。

在Windows中,一般安装的应用程序会在注册表中记录设置路径,您可以尝试查看vlc是否执行相同操作并从注册表项检索路径,这是因为有人仍然可以决定使用不同的路径/文件夹安装时的名字,有点不寻常,但你永远不知道。

相关问题