如何打开用户主页上打开的用户默认浏览器?

时间:2018-05-09 12:11:53

标签: vb.net winforms process.start default-browser homepage

我正在尝试弄清楚如何使菜单条项目将活动Windows帐户默认浏览器打开到其主页。我尝试了Process.Start("about:blank"),由于某种原因,这始终会打开Internet Explorer的about:blank页面。 (我将谷歌浏览器作为我的默认浏览器,其中http://www.duckduckgo.com作为Windows 7 Pro上的主页。)

我知道我可以指定任何URL来打开默认浏览器,但是如何让他们选择的主页打开?我发现一些基于C#的文章需要查看注册表项,以便根据每个浏览器查找所选主页。在VB.Net 2017中,该过程是否相同/类似,我将如何进行?这是使用VB.Net 2017社区版,该项目是Windows.Forms桌面应用程序。

3 个答案:

答案 0 :(得分:0)

我找到的唯一方法是手动查询注册表有关处理http协议的默认命令。

此代码的第一行将返回"C:\Program Files\Your Browser\browser.exe" -osint -url "%1"之类的内容,因此您希望将%1替换为目标网页。

然后,如果要将Process.Start与命令行参数一起使用,则第一个参数将是命令,第二个参数将是参数。 因此,我们需要在命令和参数列表之间拆分注册表字符串。正则表达式将do this job

为了清楚起见,我省略了空检查和正则表达式的成功。

Dim cmd = CStr(Registry.ClassesRoot.OpenSubKey("http\shell\open\command").GetValue(String.Empty))
cmd = cmd.Replace("%1","about:blank")
Dim r = new Regex("^""([^""]+)"" (.*)")
Dim m = r.Match(cmd)
Process.Start(m.Groups(1).Value, m.Groups(2).Value)

答案 1 :(得分:0)

找到一些线索here

Dim readValue As String = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\
Associations\UrlAssociations\http\UserChoice", "Progid", Nothing).ToString

将为当前用户的浏览器提供标识符。

Dim path As String = My.Computer.Registry.GetValue("HKEY_CLASSES_ROOT\"
& readValue & "\shell\open\command", "", Nothing).ToString

将返回带路径的run命令。

添加一些代码以提取EXE并在不带参数的情况下运行它,例如;

 Dim DivArr As Char() = {Chr(34), "\"c}
'split into segments using quotes and back-slash seperators
 Dim parts() As String = path.Split(DivArr)
 'find first segment with period/full-stop
 Dim Executable As String = Array.Find(parts, Function(x) (x.Contains(".")))

Process.start(Executable) 

答案 2 :(得分:-1)

你可以试试这个:

Process.Start("your_url_here eg. www.homepage.com etc.")

并且,如果它是您的默认浏览器,则会以谷歌浏览器打开。