Csharp/C#教程:列出Windows计算机上安装的所有Web浏览器分享


列出Windows计算机上安装的所有Web浏览器

是否有一个常用的方法/ api列出我的机器(和每个用户)上安装的所有Web浏览器(名称,可执行文件,默认是/否),以及如何找出哪个是默认的Web浏览器?

我看到了这个问题: 如何找到机器上安装的所有浏览器

在MSDN上: 如何使用Windows开始菜单注册Internet浏览器或电子邮件客户端,该菜单指出Web浏览器HKLMSOFTWAREClientsStartMenuInternet (和HKCU )下注册自己

这真的是常见/正确的方法吗? (如果是的话,那里有任何可靠的实施吗?)


我的目标是创建一个下拉菜单,其中列出了安装在用户计算机上的所有Web浏览器(指示默认值),并允许用户使用其中一个外部Web浏览器浏览其HTML文件/ URL。

你可以做点什么

 procedure ListRegisteredBrowsers(List: TStrings); var reg: TRegistry; ki: TRegKeyInfo; i: Integer; keyname: string; len: DWORD; begin reg := TRegistry.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.KeyExists('SOFTWAREClientsStartMenuInternet') then Exit; if not Reg.OpenKey('SOFTWAREClientsStartMenuInternet', false) then raise Exception.Create('ListRegisteredBrowsers: Could not open registry key.'); if not reg.GetKeyInfo(ki) then raise Exception.Create('ListRegisteredBrowsers: Could not obtain registry key information.'); List.Clear; SetLength(keyname, len); for i := 0 to ki.NumSubKeys - 1 do begin len := ki.MaxSubKeyLen + 1; if RegEnumKeyEx(reg.CurrentKey, i, PChar(keyname), len, nil, nil, nil, nil) <> ERROR_SUCCESS then RaiseLastOSError; if reg.OpenKey('SOFTWAREClientsStartMenuInternet' + keyname, false) then List.Add(reg.ReadString('')); Reg.OpenKey('SOFTWAREClientsStartMenuInternet', true); end; finally reg.Free; end; end; 

 function GetDefaultBrowser: string; var reg: TRegistry; begin result := ''; reg := TRegistry.Create; try reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey('SOFTWAREClientsStartMenuInternet', false) then result := reg.ReadString('') else begin reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('SOFTWAREClientsStartMenuInternet', false) then result := reg.ReadString('') end; reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('SOFTWAREClientsStartMenuInternet' + result, false) then result := reg.ReadString(''); finally reg.Free; end; end; 

测试一下:

 procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; i: Integer; DefBrw: string; begin DefBrw := GetDefaultBrowser; sl := TStringList.Create; try ListRegisteredBrowsers(sl); Memo1.Lines.BeginUpdate; for i := 0 to sl.Count - 1 do if SameText(sl[i], DefBrw) then Memo1.Lines.Add(sl[i] + ' (Default)') else Memo1.Lines.Add(sl[i]); Memo1.Lines.EndUpdate; finally sl.Free; end; end; 

该方法查找所有注册为“ 开始”菜单“Internet应用程序”的浏览器。 在实践中,只要所有主要浏览器都以这种方式注册自己就足够了。 如果浏览器无法将自身注册为“ 开始”菜单“Internet应用程序”,则Windows无法将其注意到并向用户提供该浏览器。

解释它的MSDN主题在这里: http : //msdn.microsoft.com/en-us/library/windows/desktop/dd203067.aspx

Windows XP和Windows Vista中的“开始”菜单包含默认Internet(浏览器)和电子邮件(邮件)客户端的保留插槽,通常称为“开始”菜单“Internet应用程序”。 注册为开始菜单Internet应用程序的应用程序在整个系统(每台计算机)上执行此操作。 在Windows Vista中,用户可以使用“默认程序”function设置每个用户的默认值。

上述就是C#学习教程:列出Windows计算机上安装的所有Web浏览器分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/996645.html

(0)
上一篇 2021年12月25日
下一篇 2021年12月25日

精彩推荐