C# 在代码中查找Webview2 WPF控件的边缘版本
我正在尝试使用下面的C代码查找Microsoft Edge版本C# 在代码中查找Webview2 WPF控件的边缘版本,c#,.net,wpf,webview,microsoft-edge,C#,.net,Wpf,Webview,Microsoft Edge,我正在尝试使用下面的C代码查找Microsoft Edge版本 RegistryKey reg=Registry.ClassesRoot.OpenSubKey(@“本地设置\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages”); 如果(reg!=null) { foreach(reg.GetSubKeyNames()中的字符串子键) { if(subkey.StartsWith(“Micro
RegistryKey reg=Registry.ClassesRoot.OpenSubKey(@“本地设置\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages”);
如果(reg!=null)
{
foreach(reg.GetSubKeyNames()中的字符串子键)
{
if(subkey.StartsWith(“Microsoft.MicrosoftEdge”))
{
匹配rxEdgeVersion=null;
rxEdgeVersion=Regex.Match(子键@“(Microsoft.MicrosoftEdge)(?\d+\.\d+\.\d+\.\d+)(\u neutral\u 8wekyb3d8bbwe)”;
if(rxEdgeVersion.Success)
返回EdgeVersion=rxEdgeVersion.Groups[“version”].Value;
}
}
}
}
此函数返回版本44.18362.449.0。
但是当我直接签入Edge browser=>Settings=>help时(edge://settings/help)版本为84.0.522.40
这两个版本模式不匹配,而且我没有并行安装不同的edge版本
请帮助我将浏览器UI和C#的两个版本关联起来。请查看
C:\ProgramFiles(x86)\Microsoft\Edge\Application
在那里,您可能会发现新的Chromium Edge具有正确的版本号,嵌入在文件msedge.exe
以及文件夹名称中
但是为什么不检查浏览器userAgent字符串呢?他们有版本号包括在内 如果您想使用C#代码检查MS Edge Chromium浏览器版本,那么我建议尝试在注册表下面的位置进行检查 计算机\HKEY\U LOCAL\U MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Client{2CD8A007-E189-409D-A2C8-9AF4EF3C72AA} 如果检查PV关键点的值,则可以注意到它显示的是边缘浏览器的版本
如果您有其他版本,如Canary、beta、dev或stable,则可以尝试检查客户端文件夹中的其他文件夹,这可能有助于获取已安装的Edge Chromium浏览器的版本。Microsoft Edge的版本号过去是44,但随着Edge“新”版本的发布(2020年初),Microsoft的Edge开发团队已决定将许多Edge浏览器建立在“Chromium”浏览器项目的基础上。您是否已经检查了该项目的github问题?你并不孤单:)谢谢你的链接。他们建议不要依赖注册表项:-)。他们还提到
getcorewebview2browserversioninfo()
它是否已弃用?未找到它,但我仍然需要客户端计算机中安装的浏览器版本,只有我可以比较两者。谢谢回答。但此方法取决于安装文件夹。是否有常用方法检测是否安装了edge chromium最新版本。路径C:\Program Files(x86)\Microsoft\Edge\Application即使与Legacy Edge?一起使用?。实际上,我需要版本号来检测Microsoft Edge WebView2是否能在机器上工作。旧版Edge使用了该软件包方法,对于新的Edge,您可能是对的,有一个自定义安装目录。请参阅我的答案中的编辑。我无法使用用户代理字符串,因为我正在WPF应用程序中启动web view 2。所以,我正在检查web view 2是否在机器中获得了合适的边缘版本。好的,我开始理解了。如果没有作为prereq安装chromium edge,您的代码甚至无法运行?是的,如果存在,我的代码需要在最新浏览器中加载一些HTML页面,否则我将在旧IE引擎中加载页面。谢谢:-)64位和32位机器的路径相同吗?32位和64位机器的路径应该相同。
RegistryKey reg = Registry.ClassesRoot.OpenSubKey(@"Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages");
if(reg != null)
{
foreach(string subkey in reg.GetSubKeyNames())
{
if(subkey.StartsWith("Microsoft.MicrosoftEdge"))
{
Match rxEdgeVersion = null;
rxEdgeVersion = Regex.Match(subkey, @"(Microsoft.MicrosoftEdge_)(?<version>\d+\.\d+\.\d+\.\d+)(_neutral__8wekyb3d8bbwe)");
if (rxEdgeVersion.Success)
return EdgeVersion = rxEdgeVersion.Groups["version"].Value;
}
}
}
}