我想使用以下方法从注册表中读取值:
char* cDriveStatus=ReadFromRegistry(HKEY_CURRENT_USER,_T(NDSPATH),m_szDriveName);
我尝试使用GetBuffer m_szDriveName.GetBuffer(0)
进行转换,但这再次显示错误:
错误C2664:无法将参数3从'wchar_t *'转换为'LPSTR'
修改 方法和变量声明如下:
char* ReadFromRegistry(HKEY,LPCTSTR,LPSTR);
CString m_szDriveName;
答案 0 :(得分:1)
您的构建设置看起来像'Unicode'(基于对wchar_t
的引用) - 您可以在项目的配置属性的常规页面,字符集字段中将其更改为“使用多字节字符集”,如果使用Unicode不是你的意图。
要查看项目的属性,请在“解决方案资源管理器”中右键单击该项目,然后选择“属性”。
您可能会发现ATL class CRegkey可以根据其类型从注册表中正确提取值。
答案 1 :(得分:0)
这对我有用:
char* cDriveStatus=ReadFromRegistry(HKEY_CURRENT_USER,_T(NDSPATH),(LPSTR)m_szDriveName.GetBuffer(m_szDriveName.GetLength()));