MkParseDisplayName返回无效的语法

时间:2019-06-23 18:56:56

标签: mfc com atl

我正在尝试一些简单的事情,我想创建一个具有特定显示名称的名字对象(例如“ MyApplicationMnk”)

我需要此昵称将其绑定到Windows注册表中以LOCAL SERVER类型注册的EXE应用程序中,以将其注册到“运行对象表”(又名ROT)中。

COM函数MkParseDisplayName返回invalid syntax错误,我发现唯一提到的解决此问题的方法source对我不起作用。

代码如下所示

IMoniker* appmnk;
HRESULT hr;
CComPtr<IBindCtx> bct;
DWORD wctx = 0;
ULONG ulng = 0L;
CreateBindCtx(wctx, &bct);
OLECHAR dspnm = (wchar_t)"MyApplicationMnk";
LPCOLESTR dspnmptr = &dspnm;
hr = MkParseDisplayName(bct, dspnmptr, &ulng, &appmnk); // returns invalid syntax
.
.
//some code
.
.
appmnk->Release();

我试图像这样直接插入值

hr = MkParseDisplayName(bct, OLESTR("MyApplicationMnk"), &ulng, &appmnk);

以及上述建议的解决方案

hr = MkParseDisplayName(bct, (wchar_t *)(_bstr_t)(char *)"MyApplicationMnk", &ulng, &appmnk);

我不知道怎么了!所有提供的类型都与文档中的内容匹配。

任何帮助都将不胜感激。

0 个答案:

没有答案