尝试在Windows 10上获取默认Web浏览器路径失败

时间:2016-02-07 20:51:00

标签: c++ windows winapi windows-shell windows-explorer

我在我的应用程序的安装程序中执行以下操作(请注意,此项目的安装程序只是Windows可执行文件(setup.exe)而不是MSI。)

首先,我需要检查.htm.html文件类型是否存在文件关联。我did so already。然后,如果没有关联,我需要添加它们以通过Web浏览器打开。

为了减少对用户系统的影响,我想使用用户的默认Web浏览器。问题是如何找到它的路径?

所以我这样做:

//Get default web browser path
WCHAR wbuffPath[MAX_PATH] = {0};
DWORD dwszBuffPath = MAX_PATH;
::AssocQueryStringW(0, ASSOCSTR_EXECUTABLE, L"http", L"open", wbuffPath, &dwszBuffPath);

这似乎有效,除非我在Windows 10上运行它,我得到这个路径(当默认是Edge浏览器时):

  

C:\窗口\ system32 \ LaunchWinApp.exe

那么如何重置参数才能启动呢?

1 个答案:

答案 0 :(得分:1)

尝试使用ASSOCSTR_COMMAND代替ASSOCSTR_EXECUTABLE。通过使用ASSOCSTR_EXECUTABLE,您要求只是可执行文件,这正是您要回来的。 ASSOCSTR_COMMAND应该为您提供可执行文件的完整命令行。