[英]C# + .NET : Find the path of an app like chrome.exe in the computer (all disks, all directories)
[英]How do I use C# to get the path to chrome.exe on Windows?
我想从自动化测试框架中启动chrome,以便可以测试服务器端ASP.NET代码。 确定chrome.exe在我的计算机上的位置的最佳方法是什么?
在计算机上安装Chrome后,它将安装ChromeHTML
URL协议。 您可以使用它来访问Chrome.exe的路径。
一些示例代码可能会有所帮助。 以下代码返回一个看起来像这样的字符串:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -- "%1"
可以得到的示例代码:
var path = Microsoft.Win32.Registry.GetValue(
@"HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command", null, null) as string;
if (path != null)
{
var split = path.Split('\"');
path = split.Length >= 2 ? split[1] : null;
}
如果在代码段的末尾path为null,则可以假定未安装Chrome。
另一种方法是使用Karma测试框架使用的逻辑。
const string suffix = @"Google\Chrome\Application\chrome.exe";
var prefixes = new List<string> {Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)};
var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
var programFilesx86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);
if (programFilesx86 != programFiles)
{
prefixes.Add(programFiles);
}
else
{
var programFilesDirFromReg = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion", "ProgramW6432Dir", null) as string;
if (programFilesDirFromReg != null) prefixes.Add(programFilesDirFromReg);
}
prefixes.Add(programFilesx86);
var path = prefixes.Distinct().Select(prefix => Path.Combine(prefix, suffix)).FirstOrDefault(File.Exists);
如果在代码段的末尾path为null,则可以假定未安装Chrome。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.