Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在代码中查找Webview2 WPF控件的边缘版本_C#_.net_Wpf_Webview_Microsoft Edge - Fatal编程技术网

C# 在代码中查找Webview2 WPF控件的边缘版本

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

我正在尝试使用下面的C代码查找Microsoft Edge版本

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;
            }
        }
    }
}