VS2010下关于Cstring调用读取注册表出错··

coFinder 2011-09-26 01:34:33
写了一个函数
CString m_KeyPath;
HKEY hKey;
DWORD dwType;
DWORD dwValue=100;
m_KeyPath=CString("SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\00");
int KeyPathLen=m_KeyPath.GetLength()+2;
int Index=0,Index2=0;
CString pChar;

m_KeyPath.Format(LPCTSTR("%s%d%d"),m_KeyPath,Index,Index2);

RegOpenKey(HKEY_LOCAL_MACHINE,m_KeyPath,&hKey);
RegQueryValueEx(hKey,LPCWSTR("DriverDesc"),0,&dwType,(LPBYTE)(LPCTSTR)pChar,&dwValue);
MessageBox((LPCTSTR)pChar);

就是读取m_KeyPath这个注册表的路径 但是我要遍历{4D36E972-E325-11CE-BFC1-08002BE10318}下面0001到0009 DriverDesc的值,所以我就只取00 format函数配合变动的index和index2的值来控制 m_KeyPath的变化



在VS2010下调试,显示Format之后m_KeyPath变成乱码。index和index2的值

下面是我在VC6.0下通过的代码
BOOL CMyDlg::FindRigthPath()// CString m_KeyPath是在类里面定义了
//m_KeyPath=CString("SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\00");
{HKEY hKey;
DWORD dwType;
DWORD dwValue=100;
int KeyPathLen=m_KeyPath.GetLength()+2;
int Index=0,Index2=0;
CString pChar;
char StrTemp='0';
char Buffer[2];

while( Index < 19 && Index2 < 2)
{
m_KeyPath.Format("%s%d%d",m_KeyPath,Index2,Index);

if (ERROR_SUCCESS==RegOpenKey(HKEY_LOCAL_MACHINE,m_KeyPath,&hKey) &&
ERROR_SUCCESS==RegQueryValueEx(hKey,"DriverDesc",0,&dwType,(LPBYTE)(LPCTSTR)pChar,&dwValue))
{

if ( pChar.Find("Ethernet")!=-1 || pChar.Find("Gigabit")!=-1 )
{
//MessageBox("find it!");
m_DriveDesc=pChar;
// MessageBox(m_DriveDesc);
RegCloseKey(hKey);
return TRUE;
}
}
if (++Index>9) Index2=1;
dwValue=100;
m_KeyPath="SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\00";
RegCloseKey(hKey);
}

return FALSE;
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2011-09-26
  • 打赏
  • 举报
回复
m_KeyPath=_T("SYSTEM\\ControlSet001\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\00");

m_KeyPath.Format(_T("%s%d%d"),m_KeyPath,Index2,Index);
VS2010默认字符集是Unicode
5t4rk 2011-09-26
  • 打赏
  • 举报
回复
路过 帮顶

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧