如果我知道应用程序exe文件的名称,如何从VB.net找到已安装应用程序的路径? 谢谢!
答案 0 :(得分:5)
如果您正在寻找的话,这就是您如何找到执行程序集的路径?
String strPath = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
[Visual Basic]
Dim strPath As String = System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
如果您知道文件的名称,此链接将向您展示如何查找其他文件路径:
http://csharp.net-tutorials.com/file-handling/file-and-directory-information/
具体来说,这是上面链接中的代码片段,用于查找目录中的可执行文件:
FileInfo[] subFiles = di.GetFiles("*.exe", SearchOption.AllDirectories);
您可以将“* .exe”替换为可执行文件的名称。
答案 1 :(得分:4)
如果您指的是任意应用程序(不是正在运行的应用程序),除了在硬盘驱动器上搜索该.exe文件名之外别无他法。
如果您至少可以确信它位于Program Files文件夹中,那么这应该可以满足您的需求。
string[] files = System.IO.Directory.GetFiles(
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
"Yourexe.exe", System.IO.SearchOption.AllDirectories);
这将返回一个字符串数组,指向Program Files文件夹中具有该名称的所有文件的路径。
如果您不能认为它在Program Files中,那么您可以替换任何目录。
string rootDirectory = System.IO.DriveInfo.GetDrives()[0].RootDirectory.FullName;
string[] files = System.IO.Directory.GetFiles(
rootDirectory,
"Yourexe.exe", System.IO.SearchOption.AllDirectories);
这将搜索整个主硬盘。同样,您可以替换rootDirectory
变量的任何根路径。
应该指出的是,这些选择相对较慢;遗憾的是,如果不了解有关可能的安装位置的更多信息,就无法快速完成此任务。
答案 2 :(得分:3)
如果您的代码在application.exe中执行,您可以通过调用Assembly.GetExecutingAssembly().Location
来获取文件(application.exe)的位置。
答案 3 :(得分:1)
如果我理解正确,您希望找到计算机上安装的应用程序,但不是必需的。正在运行的应用程序?如果是这样,你可以检查注册表......
抱歉这是在C#中,我不熟悉VB.Net。
public string GetApplicationPath(string appname)
{
using(Microsoft.Win32.RegistryKey key = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, ""))
{
using(Microsoft.Win32.RegistryKey subkey = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" + appname))
{
if(subkey == null)
return "";
object path = subkey.GetValue("Path");
if(path!=null)
return (string)path;
}
}
return "";
}
然后你可以使用:
来调用它string path = GetApplicationPath(“Myexename.exe”);
答案 4 :(得分:1)
正如其他人已经提到过的,如果你正在寻找自己的道路,这很容易。如果你需要一个正在运行的应用程序的路径,你可以尝试这样的事情:
var procList = Process.GetProcesses().Where(process => process.ProcessName.Contains("notepad"));
foreach (var process in procList)
{
Console.WriteLine("Path to {0}: {1}", process.ProcessName, Path.GetDirectoryName(process.MainModule.FileName));
}
当您需要有关该流程的其他信息时,您应该查看Process class。
如果您要查找的应用程序未运行,您可以尝试搜索Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
。
或者您可以尝试在注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
内进行搜索,以枚举控制面板 - 添加/删除程序中列出的所有程序。
如果所有这些步骤都没有帮助找到您想要的应用程序,那么除了对硬盘驱动器进行全面扫描外,没有其他办法(据我所知)。
答案 5 :(得分:0)
如果您指的是应用程序的启动路径:
Application.StartupPath()
如果您指的是通过其名称搜索其他应用程序,那么我认为没有内置任何内容。您必须遍历本地计算机上的文件。