Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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
Vb.net 如何打开用户';默认浏览器是否打开到用户主页?_Vb.net_Winforms_Process.start_Default Browser_Website Homepage - Fatal编程技术网

Vb.net 如何打开用户';默认浏览器是否打开到用户主页?

Vb.net 如何打开用户';默认浏览器是否打开到用户主页?,vb.net,winforms,process.start,default-browser,website-homepage,Vb.net,Winforms,Process.start,Default Browser,Website Homepage,我正在尝试找出如何使菜单条项打开活动的Windows帐户默认浏览器到其主页。我尝试了Process.Start(“about:blank”),出于某种原因,它总是打开Internet Explorer的页面。(我的默认浏览器是Google Chrome,其主页位于Windows 7 Pro上。) 我知道我可以指定任何URL来打开默认浏览器,但是如何打开他们选择的主页呢?我发现一些基于C#的文章需要查看注册表条目,以便在每个浏览器中找到他们选择的主页。VB.Net 2017中的流程是否相同/相似?

我正在尝试找出如何使菜单条项打开活动的Windows帐户默认浏览器到其主页。我尝试了
Process.Start(“about:blank”)
,出于某种原因,它总是打开Internet Explorer的页面。(我的默认浏览器是Google Chrome,其主页位于Windows 7 Pro上。)


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

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

此代码的第一行将返回类似于“C:\Program Files\Your Browser\Browser.exe”-osint-url“%1”,因此您希望用登录页替换
%1

然后,如果要使用带有命令行参数的
Process.Start
,第一个参数将是命令,第二个参数将是参数。 因此,我们需要在命令和参数列表之间拆分注册表字符串。regex会的

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

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)
你可以试试这个:

Process.Start("your_url_here eg. www.homepage.com etc.")
而且,如果谷歌浏览器是你的默认浏览器,它将打开。

找到了一些线索

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

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) 

如果你试图在你的
进程.Start
中添加一个http地址,它还会用IE打开吗?不会,它会在我的用户帐户上的默认浏览器中打开,它应该是谷歌浏览器。但这并没有打开我选择的主页,它只是打开了那个URL。此操作与我笔记本电脑上的其他用户帐户不同。那里的默认浏览器是Microsft-Ege,它会按应有的方式打开定向URL,但它又不是主页。默认浏览器是打开
.html
文件的浏览器。你可以用它来找到开瓶器。当你用“名字”打开默认浏览器时,它会显示主页。@ Jimi,你的解决方案看起来是我所见过的最优雅的,但是“AsSoCyrErrStrin”看起来是C++命令,我使用VB.Net。我不知道如何将C++命令合并到VB.Net中。它能在VB中工作吗?我在这里写了“示例代码”,这是一个指向VB.net示例代码的链接,用于实现此功能。这是我的,所以如果你对此有疑问,没问题。你的主页的url是什么?OP说它与“about:blank”不兼容,这是他的问题所在。我的桌面(Windows 7 Professional)主页的url是我在硬盘上创建的一个本地页面,并且是[file:///C:/Startpage/default.htm]它的默认浏览器是Google Chrome,但在我的笔记本电脑上,默认浏览器是Windows 10上的Microsoft Edge,主页设置为。我可以将VB.Net项目设置为打开任何我想要的网页,除了实际的主页,直到我尝试这些答案和评论。
 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)