【问题标题】:Trying to get default web browser path fails on Windows 10尝试在 Windows 10 上获取默认 Web 浏览器路径失败
【发布时间】:2016-02-07 20:51:00
【问题描述】:

我在我的应用程序的安装程序中执行以下操作(请注意,此项目的安装程序只是一个 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

那么我该如何重置参数来启动它呢?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 哈。有趣的。如果我这样做,它只会给我"C:\WINDOWS\system32\LaunchWinApp.exe" "%1"。这就是他们在 Windows 10 中的做法。非常整洁!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2023-03-28
    • 2011-08-20
    • 2017-06-22
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多