如何格式化注册表->外壳->打开->命令(从AssocQueryString输出)

时间:2019-02-04 19:28:44

标签: c++ c windows

我不能使用ShellExecute(Ex),但必须提供非常类似的功能。

我的函数接受“文件”和“自变量”字符串。从文件字符串中提取一个扩展名(如果有),然后调用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。是否有Windows函数/ API会格式化这些“命令行”?

如果不能,我是否可以将%*当作shell打开字符串中的最后一个测试,并且不使用%1(文件名)以外的其他参数?换句话说,我可以将%*替换为参数字符串吗?

0 个答案:

没有答案