LPCTSTR StrValue=LPCTSTR(strSave);//strSave是CString类型
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);
出错:“strlen”: 不能将参数 1 从“LPCTSTR”转换为“const char *”
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);
出错:“strlen”: 不能将参数 1 从“LPCTSTR”转换为“const char *”
strlen(StrValue)改为 StrValue.GetLength()试试看。
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);直接改为
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)(LPCTSTR)strSave,strSave.GetLength() + 1);
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE*)LPCTSTR(strSave),strSave.GetLength() + 1);
最后一个参数不要加一了。RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE*)LPCTSTR(strSave),strSave.GetLength());
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);
出错:“strlen”: 不能将参数 1 从“LPCTSTR”转换为“const char *”
////////////////////////////////////////////////////////////////////////////////////
从出错提示可以看出,你的字符串用的应该是UNICODE,而strlen只是针对多字节的,在这里用的是宽字节,那就应该改用这个函数:_tcslen我觉得最终应该改成这个样子:
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,(_tcslen(StrValue) + 1) * sizeof(TCHAR));