我正在寻找一种方法来检索文件的路径,而不知道他的位置。
我开发了一个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的路径?
答案 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是否执行相同操作并从注册表项检索路径,这是因为有人仍然可以决定使用不同的路径/文件夹安装时的名字,有点不寻常,但你永远不知道。