HKEY m_Key;
CString m_SystemRoot;
CString m_sKeyPath;
m_sKeyPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
if(RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)!=0 && RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)! =ERROR_SUCCESS)
{}
else
{
unsigned char m_Data[80];
DWORD TYPE(0);
DWORD cbData(80);
memset(m_Data,0,sizeof(m_Data));
::RegQueryValueEx(m_Key,"ABC",0,&TYPE,m_Data,&cbData);
m_SystemRoot.Format("%s",m_Data);
AfxMessageBox(m_SystemRoot);
}
::RegCloseKey(m_Key);我在读取注册表中信息时为什么读出来的为空?ABC中是非空的
CString m_SystemRoot;
CString m_sKeyPath;
m_sKeyPath="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
if(RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)!=0 && RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)! =ERROR_SUCCESS)
{}
else
{
unsigned char m_Data[80];
DWORD TYPE(0);
DWORD cbData(80);
memset(m_Data,0,sizeof(m_Data));
::RegQueryValueEx(m_Key,"ABC",0,&TYPE,m_Data,&cbData);
m_SystemRoot.Format("%s",m_Data);
AfxMessageBox(m_SystemRoot);
}
::RegCloseKey(m_Key);我在读取注册表中信息时为什么读出来的为空?ABC中是非空的
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;
RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)!=0 && RegOpenKey(HKEY_local_MACHINE,m_sKeyPath,&m_Key)! =ERROR_SUCCESS你这句看着很奇怪啊