Windows 10 上尝试获取默认 Web 浏览器路径失败
Trying to get default web browser path fails on Windows 10
我正在我的应用程序安装程序中执行以下操作(请注意,此项目的安装程序只是一个 Windows 可执行文件 (setup.exe
) 而不是 MSI。)
首先我需要检查 .htm
和 .html
文件类型是否存在文件关联。我did so already。然后,如果没有关联,我需要添加它们以通过网络浏览器打开。
为了减少对用户系统的影响,我考虑使用用户的默认网络浏览器。问题是如何找到它的路径?
所以我是这样做的:
//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
应该为您提供可执行文件的整个命令行。
我正在我的应用程序安装程序中执行以下操作(请注意,此项目的安装程序只是一个 Windows 可执行文件 (setup.exe
) 而不是 MSI。)
首先我需要检查 .htm
和 .html
文件类型是否存在文件关联。我did so already。然后,如果没有关联,我需要添加它们以通过网络浏览器打开。
为了减少对用户系统的影响,我考虑使用用户的默认网络浏览器。问题是如何找到它的路径?
所以我是这样做的:
//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
应该为您提供可执行文件的整个命令行。