sub*_*bbu 7 browser winapi mfc visual-studio visual-c++
如何以编程方式确定系统中的默认浏览器.代码必须使用vc ++开发是否有任何API?
注册表中的哪个位置存储了默认浏览器值?
MSa*_*ers 10
你通常不需要知道这一点.ShellExecute(0,0,"http://stackoverflow.com",0,0,SW_SHOWNORMAL);会做的.Windows将发现http://并从中找出您要打开URL的信息."默认"webbrowser几乎被定义为Windows用于此任务的webbrowser.
这不仅仅是支持的http://.ShellExecute也可以使用https:// URL启动默认的Web浏览器.对于mailto:URL,它启动默认邮件客户端.
您可以在注册表中找到默认浏览器
即对于Windows XP和Vista位于
HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet\
Run Code Online (Sandbox Code Playgroud)
TL; DR:如果HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\存在则读取; 否则阅读HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\.
在阅读了这里的答案之后,我发现了如何检测默认浏览器的一致意见,所以我做了一些实验和研究来弄明白.我下载了Firefox源代码,编写了一个脚本,该脚本读取了一堆注册表项,并且在重复更改默认浏览器的同时运行了Process Explorer.
我发现Firefox和Chrome在将每个设置为默认浏览器时会有很多注册表项.我相信Safari和Opera的行为都相似.IE似乎只更改了我正在观看的一个注册表项.
我发现虽然大多数浏览器更改了其他注册表路径,但所有浏览器都会更改 HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default)
以下是注册表项中的注册表值,HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\ (default)而每个浏览器都是默认浏览器.
IEXPLORE.EXEGoogle ChromeFIREFOX.EXESafari.exeOpera在Microsoft Windows 7 Home Premium SP1 64位上测试
编辑:
我发现在全新安装的Windows XP SP3 HKEY_CURRENT_USER\SOFTWARE\Clients\StartMenuInternet\上不存在.在这种情况下,您应该从中读取默认浏览器HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\.我怀疑在其他版本的Windows的全新安装中也是如此.
附录:
ShellExecute如果你想要做的只是在默认浏览器中打开一个网页,这个方法是一个很好的解决方案.但是,如果您希望仅在默认浏览器中安装扩展程序,ShellExecute则无法解决问题.
| 归档时间: |
|
| 查看次数: |
5692 次 |
| 最近记录: |