Как мне отформатировать Registry-> Shell-> Open-> Command (вывод из AssocQueryString) - PullRequest
0 голосов
/ 04 февраля 2019

Я не могу использовать ShellExecute (Ex), но я должен предоставить очень похожую функциональность.

Моя функция принимает строки "file" и "arguments".Из строки файла я извлекаю расширение (если доступно) и вызываю AssocQueryStringW.В частности:

    rc = AssocQueryStringW(URL_SCHEME_FILE | ASSOCF_NOTRUNCATE,
                           ASSOCSTR_COMMAND,
                           extension,
                           verb,
                           execStr,
                           &execStrSize);

(глагол == "открыть").Если расширение зарегистрировано, оно вернет строку данных, связанную с записью реестра: HKEY_CLASSES_ROOT / \ Shell \ Open \ Command.Я думал, что смогу использовать FormatMessage для форматирования возвращаемой строки и моих аргументов.К сожалению, некоторые записи содержат (% *).IE.AssocFile.WEBSITE содержит% l (да, строчную букву L, а не единицу (1). Я передаю эту информацию в CreateProcessAsUser. Есть ли функция / API для Windows, которая будет форматировать эти «командные строки»?

Если нет, могу ли я зависеть от% *, являющегося последним тестом в открытой строке оболочки, и от того, что не используются никакие другие аргументы, кроме% 1 (имя файла)? Другими словами, я могу просто заменить% * на строку аргументов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...