下面这段代码是我在借鉴别人的,查看CPU信息的,是一个对话框工程,在vc6.0下运行成功,在文本控件里能正常显示出来,但是到了vc2005里,我把参数设置正确后,打开注册表那步就不成功,然后我试所有我知道函数和方法,都不成功,恳请大家谁会,帮个忙?说说原因,或者给个成功在05下运行的例子~
CRegKey rk;
HKEY m_hKey;
DWORD pCount=1024;
CString KeyValue;
char szValue[1024];
LPCTSTR lp="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
if(rk.Open(HKEY_LOCAL_MACHINE,lp)== ERROR_SUCCESS)
{
LPCTSTR lKeyName="ProcessorNameString";
if(rk.QueryValue(szValue,lKeyName,& pCount)== ERROR_SUCCESS)
{
KeyValue=szValue;
KeyValue.Replace(" ","");
SetDlgItemText(IDC_CPUINFO,"CPU信息:"+KeyValue);
}
else
{
SetDlgItemText(IDC_CPUINFO,"Query error");
}
//rk.SetValue(lKeyName,"HH");
}
else
{
SetDlgItemText(IDC_CPUINFO,"Open error");
}
rk.Close();
CRegKey rk;
HKEY m_hKey;
DWORD pCount=1024;
CString KeyValue;
char szValue[1024];
LPCTSTR lp="HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";
if(rk.Open(HKEY_LOCAL_MACHINE,lp)== ERROR_SUCCESS)
{
LPCTSTR lKeyName="ProcessorNameString";
if(rk.QueryValue(szValue,lKeyName,& pCount)== ERROR_SUCCESS)
{
KeyValue=szValue;
KeyValue.Replace(" ","");
SetDlgItemText(IDC_CPUINFO,"CPU信息:"+KeyValue);
}
else
{
SetDlgItemText(IDC_CPUINFO,"Query error");
}
//rk.SetValue(lKeyName,"HH");
}
else
{
SetDlgItemText(IDC_CPUINFO,"Open error");
}
rk.Close();
解决方案 »
- 如何对用WPF编写的界面应用Spy?
- 求类似QQ或windows开始菜单源码(最上面带一个Title的可以显示头像家字符串),谢谢啊
- 如何编程用VC控制一个应用程序
- 是不是所有的窗口要显示的话都要走oninitial()这个初始化函数?我在一个dialog设置断点,发现dialog出现的时候,并没有调用oninitial(
- 哪里有MSHTML的编程资料下载?
- 关于网络打印的问题?????????急急急
- 怎样取得webbrowser控件当前的XML文件
- SDK编程菜鸟问(一)对话框消息
- 对某一dll,客户程序通过气头文件和lib文件来调用与用loadlibrary()方法调
- 《技术内幕》第四版和第五版孰好孰劣?
- 怎么可能?关于变量的作用域问题(wcdj)
- vc中的文件关联问题
下面的列子实现了读注册表的计算机用户名,然后写入文件的功能。 1、读取注册表直接用了 API 函数; 2、写文件用了 MFC 的 CFile 类; 3、读取了注册表键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 4、例子比较简单,没有判断所有函数的返回值; 5、Win2000 + VC6 测试通过。
HKEY hKey;
LONG nResult = 0;
DWORD dwSize = 0; // 数据长度TCHAR lpSubKey[] = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
TCHAR lpValueName[] = _T("RegisteredOwner");///////////////nResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, // 主键
lpSubKey, // 子键
NULL,
KEY_READ, // 权限
&hKey); // Handleif( nResult != ERROR_SUCCESS )
{
MessageBox("打开键错误");
return;
}///////////////////// 第一次调用,获取数据长度
RegQueryValueEx(hKey,
lpValueName,
NULL,
NULL,
NULL,
&dwSize); // 缓冲区长度// 动态分配缓冲区
LPBYTE dataBuf = new BYTE[dwSize];// 第二次调用,获取数据
RegQueryValueEx(hKey,
lpValueName,
NULL,
NULL,
dataBuf,
&dwSize);// 关闭
RegCloseKey(hKey);// 写文件
CFile f( "e:\\test.txt" ,
CFile::modeCreate | CFile::modeWrite );f.Write(dataBuf, dwSize);
f.Close();// 释放缓冲区
delete[] dataBuf;