从.bat / .vbs启动没有URL的默认Windows浏览器?

时间:2017-03-27 22:34:49

标签: windows batch-file vbscript registry

我需要能够启动默认的Windows浏览器,而不指定网址(应该打开主页)。

解决方案最好不要求编译二进制文件(例如.bat,.vbs等)。

它也适用于Win7 +到Win10,无需安装任何软件,也没有管理员权限。

我见过指定网址的解决方案,但这对我不起作用。这可能吗?
谢谢!

答案Batch - Default Browser?不是重复的,因为该答案为您提供了打开html文件的默认应用程序,而不是URL处理的默认浏览器。

3 个答案:

答案 0 :(得分:1)

以下仅是部分答案,它仅查看当前用户注册表并相应地回应响应。 (从第12行删除Echo=,然后删除第6行以实际尝试打开浏览器)

@Echo Off
Set "RK1=HKCU\Software\Microsoft\Windows\Shell\Associations"
Set "RK1=%RK1%\UrlAssociations\http\UserChoice"
Set "RK2=HKCU\Software\Classes\%%B\shell\open\command"
Call :Sub
Timeout -1
GoTo :EOF

:Sub    
For /F "Tokens=2*" %%A In ('Reg Query "%RK1%" /V Progid 2^>Nul') Do (
    For /F "Tokens=2*" %%C In ('Reg Query "%RK2%" /VE 2^>Nul') Do (
        For %%E In (%%D) Do If Exist "%%~E" Echo=Start "" "%%~E"))
GoTo :EOF

这只是一个部分答案,因为如果当前用户没有更改其默认浏览器,则键/数据可能不存在。 (此时检查将更加复杂)。

答案 1 :(得分:0)

您可以尝试此解决方案from here

@echo off
rem look in the HKEY_CLASSES_ROOT\htmlfile\shell\open\command registry for the default browser
for /f "tokens=*" %%a in ('REG QUERY HKEY_CLASSES_ROOT\htmlfile\shell\open\command /ve ^| FIND /i "REG_SZ"') do (
   set "input=%%a"
)

setlocal enableDelayedExpansion
rem parse the input field looking for the second token
for /f tokens^=^2^ eol^=^"^ delims^=^" %%a in ("!input!") do set "browser=%%a"
echo "%browser%"
Start "Default Browser" "%browser%"
pause>nul

编辑:28/03/2017 @ 01:55

试试这段代码:

@echo off
for /f "tokens=3 delims= " %%a in (
    'REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice" ^| FIND /i "ProgId"'
) Do (
        set "input=%%a"
)
SET Browser=%input:~0,-4%.exe
echo "%Browser%"
Start "Default Browser" "%Browser%" & pause & exit

答案 2 :(得分:0)

在@Compo

的帮助下解决了这个问题
Dim oShell
Set oShell = CreateObject("WScript.Shell")

Dim strProgId
strProgId = oShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\ProgID")
Dim strExe
strExe = oShell.RegRead("HKEY_CLASSES_ROOT\" & strProgId & "\shell\open\command\")
wscript.echo strExe