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



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

首先,我需要检查是否存在.htm.html文件类型的文件关联。我已经这样做了。然后,如果没有关联,我需要添加它们以通过网络浏览器打开。

为了减少对用户系统的影响,我想使用用户的默认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:\WINDOWS\system32\LaunchWinApp.exe

那么如何重置参数以启动它呢?

尝试使用 ASSOCSTR_COMMAND 而不是 ASSOCSTR_EXECUTABLE 。 通过使用 ASSOCSTR_EXECUTABLE ,您要求可执行文件本身,这正是您要返回的。 ASSOCSTR_COMMAND应该为您提供可执行文件的整个命令行。

最新更新