哪个达人请看看下面的代码,Window CE下想读取注册表中HKEY_CURRENT_USER\\Keyboard Layout\\Preload的名为“1”的项的值00000804,类型是REG_SZ。语句都能执行,就是MessageBox显示的是空而不是正确的值,怎么回事呢?BOOL CRegEditDlg::OnInitDialog()
{
HKEY hKey;
DWORD dwType = REG_SZ;
CString data;
DWORD dwSize = 1024;
CString szKeyName = _T("Keyboard Layout\\Preload");
long iret = RegOpenKeyEx(HKEY_CURRENT_USER,szKeyName,0,KEY_ALL_ACCESS,&hKey);
if(iret == 0)
{
if(RegQueryValueEx(hKey,_T("1"),0L,&dwType,(BYTE *)&data,&dwSize))
{
MessageBox(data,_T("Query result is:"),MB_OK);
RegCloseKey(hKey);
}
else
{
CString strerr;
strerr.Format(_T("return%d"),iret);
MessageBox(strerr,_T("error"),MB_OK);
}
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
{
HKEY hKey;
DWORD dwType = REG_SZ;
CString data;
DWORD dwSize = 1024;
CString szKeyName = _T("Keyboard Layout\\Preload");
long iret = RegOpenKeyEx(HKEY_CURRENT_USER,szKeyName,0,KEY_ALL_ACCESS,&hKey);
if(iret == 0)
{
if(RegQueryValueEx(hKey,_T("1"),0L,&dwType,(BYTE *)&data,&dwSize))
{
MessageBox(data,_T("Query result is:"),MB_OK);
RegCloseKey(hKey);
}
else
{
CString strerr;
strerr.Format(_T("return%d"),iret);
MessageBox(strerr,_T("error"),MB_OK);
}
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
#define STR_REGISTRYROOT "SYSTEM\\CurrentControlSet\\Services\\Test"
#define STR_REGISTRYONE "Test"LONG CPrePowerTestDlg::GetEventSource(char* s1)
{
HKEY hkey;
LONG lReturn = 0;
char sz[256];
DWORD dwtype, sl = 256;
memset(sz,0,256); lReturn = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
STR_REGISTRYROOT, //
NULL, KEY_ALL_ACCESS, &hkey);
if (ERROR_SUCCESS != lReturn)
return lReturn; memset(s1,0,256); sl = 256;
RegQueryValueEx(hkey, STR_REGISTRYONE, NULL, &dwtype, (LPBYTE)s1, &sl);
改成if(RegQueryValueEx(hKey,_T("1"),0L,&dwType,data.GetBuffer(dwSize),&dwSize))
char *data; //
DWORD dwSize = 1024;
CString szKeyName = _T("Keyboard Layout\\Preload");
long iret = RegOpenKeyEx(HKEY_CURRENT_USER,szKeyName,NULL,KEY_ALL_ACCESS,&hKey);
if(iret == 0)
{
memset(data,0,200);///
if(RegQueryValueEx(hKey,_T("1"),NULL,&dwType,(LPBYTE)data,&dwSize)) 这样应该可以了,
if(RegQueryValueEx(hKey,_T("1"),0L,&dwType,(BYTE *)&data,&dwSize) == ERROR_SUCESS) ?
if(!RegQueryValueEx(hKey,_T("1"),0L,&dwType,(BYTE *)&data,&dwSize)) ?
BOOL CRegEditDlg::OnInitDialog()
{
HKEY hKey;
DWORD dwType = REG_SZ;
CString data;
DWORD dwSize = 1024;
CString szKeyName = _T("Keyboard Layout\\Preload");
long iret = RegOpenKeyEx(HKEY_CURRENT_USER,szKeyName,0,KEY_ALL_ACCESS,&hKey);
if(iret == 0)
{
if(RegQueryValueEx(hKey,_T("1"),0L,&dwType,(LPBYTE)data.GetBuffer(),&dwSize) == ERROR_SUCESS)
{
MessageBox(data,_T("Query result is:"),MB_OK);
RegCloseKey(hKey);
}
else
{
CString strerr;
strerr.Format(_T("return%d"),iret);
MessageBox(strerr,_T("error"),MB_OK);
}
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
MessageBox(data,_T("Query result is:"),MB_OK);
难道楼主就想这样把data的值给打印出来?
BOOL GetReg()
{
HKEY hKey;
DWORD dwType = REG_SZ;
CString data;
DWORD dwSize = 1024;
CString szKeyName = _T("Keyboard Layout\\Preload");
BYTE Value[256];
long iret = RegOpenKeyEx(HKEY_CURRENT_USER,szKeyName,0,KEY_ALL_ACCESS,&hKey);
if(iret == 0)
{
iret = RegQueryValueEx(hKey,_T("CLIENTNAME"),0L,&dwType,(LPBYTE)data.GetBuffer(),&dwSize);
if(iret == ERROR_SUCCESS)
{
CString str; str = Value;
//MessageBox(data,_T("Query result is:"),MB_OK);
RegCloseKey(hKey);
}
else
{
CString strerr;
strerr.Format(_T("return%d"),iret);
//MessageBox(strerr,_T("error"),MB_OK);
}
}
retur
看看iret返回值多少
// 通过注册表查找控制器安装路径
CRegKey key,key1;
DWORD dwIndex=0,lpcbname=100,ret=0;
char T_namepath[100];
FILETIME lpftlast;
int i=0;
if (key.Open(HKEY_LOCAL_MACHINE,"SOFTWARE\\Founder QuiQ for EagleJet\\InstallInfo")==ERROR_SUCCESS)
{
for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)
{
ZeroMemory(T_namepath,100);
lpcbname=100;
ret=RegEnumKeyEx(key,dwIndex,T_namepath,&lpcbname,NULL,NULL,NULL,&lpftlast);
if (ret!=ERROR_SUCCESS)
{
if (key1.Open(key,T_namepath)==ERROR_SUCCESS)
{
ZeroMemory(T_namepath,100);
lpcbname=100;
if (key1.QueryValue(T_namepath,"InstallDir",&lpcbname)==ERROR_SUCCESS)
{
if (strstr(T_namepath,"EagleJet System")!=NULL)
{
CString m_path=T_namepath;
m_path=m_path+"\\";
GetDlgItem( IDC_BKEDIT1 )->SetWindowText(m_path);
}
}
key1.Close();
}
}
}
key.Close();
}
啥原因啊???