【高手】c++ Windows 注册表编程--之--自定义右键菜单(外壳拓展)
问题如下:
1)手动添加系统右键菜单,写入HKEY_CLASSES_ROOT/*/shell/command。 command里面假设是"c:\\windows\\notepad.exe %1"
------------------->能正确响应
2)用RegCreateKeyEx和RegSetValueEx完成上面的工作(写入值完全一样),写入成功
-------------------》显示有右键,但是没有响应,报没有程序关联警告
具体:
HKEY hresult;
DWORD dwPos;
LPCTSTR dataset1= _T("*\\shell\\txt...");
//第一层,命令项
long value = RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset1,0,NULL,REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos);
//value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)str1,(_tcslen(str1) + 1) * sizeof(TCHAR));
//创建“command”子键
LPCTSTR dataset2= _T("*\\shell\\txt...\\command ");
value = RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset2,0,NULL,REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos);
//将该子键的“默认”数据项的数据设置为用户应用程序的路径
LPCTSTR str2=_T("c:\\windows\\notepad.exe %1");
value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)str2,(_tcslen(str2) + 1) * sizeof(TCHAR));
::RegCloseKey(hresult);
[解决办法]
_T("*\\shellex\\ContextMenuHandlers")