簡體   English   中英

如何在Windows上使用C#獲取chrome.exe的路徑?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM