Я делаю следующее в установщике моего приложения (обратите внимание, что установщик для этого проекта — просто исполняемый файл Windows (setup.exe
) а не MSI.)
Сначала мне нужно было проверить, есть ли ассоциации файлов для .htm
а также .html
типы файлов. я сделал уже. И затем, если нет никакой связи, мне нужно было добавить их, чтобы их открывал веб-браузер.
Чтобы оказать меньшее влияние на систему пользователя, я подумал о том, чтобы использовать веб-браузер пользователя по умолчанию. Вопрос в том, как найти свой путь?
Итак, я делал это:
//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
должен дать вам всю командную строку для исполняемого файла.
Других решений пока нет …