我正在尝试一些简单的事情,我想创建一个具有特定显示名称的名字对象(例如“ 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);
我不知道怎么了!所有提供的类型都与文档中的内容匹配。
任何帮助都将不胜感激。