我正在应用程序的安装程序中执行以下操作(请注意,该项目的安装程序只是一个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
应该为您提供可执行文件的整个命令行。