如何通过Windows 10上的注册表查找默认浏览器

Phạ*_*Bảo 7 registry windows-10

在Windows 10之前的Windows版本上,我可以从以下注册表项获取默认浏览器:

HKEY_CURRENT_USER\SOFTWARE\Clients\StartMenuInternet
Run Code Online (Sandbox Code Playgroud)

在Windows 10上,我将Microsoft Edge设置为默认浏览器.但我没有看到上面的注册表项有任何变化.

但是,在以前版本的Windows上,它可以正常工作.

如何在Windows 10上获取默认浏览器?

Pet*_*esh 18

从技术上讲StartMenuInternet,它不是默认浏览器,它只是确定了当您单击Internet开始菜单中的图标时系统的反应.

在Windows 10中,默认应用程序处理通过以下用户选择键完成:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\URLAssociations\(http|https)\UserChoice
Run Code Online (Sandbox Code Playgroud)

其中(http|https)一个例如公正http或公正https

该键ProgId引用了在调用url的open时调用的处理程序应用程序ID.

可以通过键入来查找ProgId值HKEY_CLASSES_ROOT,并且您正在查找Shell/Open/command默认值.对于大多数浏览器,它将是对可执行文件的简单引用.您应该能够使用Application密钥获取ApplicationName等.

现代应用程序将引用LaunchWinApp一个DelegateExecute值来指定要启动的实际应用程序(它从来都不容易,是吗?),在这种情况下,ApplicationName是对应用程序中资源的引用(我不知道如何读取这些值).

但是,为什么要查找这些信息 - 如果它只是打开一个网页,那么你应该使用DesktopAPI(因为java 1.6),例如:

Desktop.getDesktop().browse(new URI("http://msn.com"));
Run Code Online (Sandbox Code Playgroud)

有关如何阅读支持特定网址方案的应用程序的详细信息:

在Windows上,默认应用程序的控制由应用程序确定Default Programs,此应用程序读取应用程序放置在注册表中的信息.

操作系统查找注册应用程序有两个位置:

HKEY_CURRENT_USER\SOFTWARE\RegisteredApplications
Run Code Online (Sandbox Code Playgroud)

HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
Run Code Online (Sandbox Code Playgroud)

这些键下的条目是注册表中相应位置的引用,这些位置与ResisteredApplications您正在查看的键的源相同.

例如,当你安装firefox时,它会在那里标记一个Firefox包含值的条目Software\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities.这是参考HKEY_LOCAL_MACHINE\…\Capabilities.

当您查看该位置时,您将看到该键URLAssociations,该键指定它处理的URL.当您看到两者httphttps值时,它很可能是一个Web浏览器.应该可以从密钥中的ApplicationName值获取应用程序的名称Capabilities.此密钥可以引用本地化名称,也可以是其自身的本地化名称.从间接确定值并非易事(值得自己提出问题).

您可以从url的值(例如http - > FirefoxURL)回溯到a HKEY_CLASSES_ROOT\FirefoxURL\Shell\Open\Command来获取可执行文件,再次记住new-ui应用程序是一种特殊情况.