DWORD dwType, dwCount;
TCHAR value[50]= {0};
long dwcount = 50;
LONG lResult = RegQueryValueEx(hSecKey, (LPCTSTR)szEntry.GetString(), NULL, &dwType,(LPBYTE)value, &dwCount);
if (lResult == ERROR_SUCCESS)
{
//
}
hSecKey为要查询的键,szEntry为具体的某项值,各位大哥,value的值是取到了,这函数执行也没错,当时当整个函数体退出的时候抱Debug Error,具体信息如下:
DAMAGE:after Normal block(#25497) at oxo1BB68F8
另外,为什么用RegQueryValue函数如下用不能取到值?
// LONG lResult = RegQueryValue(hSecKey,(LPCTSTR) szEntry.GetString(),(LPTSTR)value,&dwcount);
RegCloseKey(hSecKey);
if (lResult == ERROR_SUCCESS)
{
//
}
TCHAR value[50]= {0};
long dwcount = 50;
LONG lResult = RegQueryValueEx(hSecKey, (LPCTSTR)szEntry.GetString(), NULL, &dwType,(LPBYTE)value, &dwCount);
if (lResult == ERROR_SUCCESS)
{
//
}
hSecKey为要查询的键,szEntry为具体的某项值,各位大哥,value的值是取到了,这函数执行也没错,当时当整个函数体退出的时候抱Debug Error,具体信息如下:
DAMAGE:after Normal block(#25497) at oxo1BB68F8
另外,为什么用RegQueryValue函数如下用不能取到值?
// LONG lResult = RegQueryValue(hSecKey,(LPCTSTR) szEntry.GetString(),(LPTSTR)value,&dwcount);
RegCloseKey(hSecKey);
if (lResult == ERROR_SUCCESS)
{
//
}
DAMAGE:after Normal block(#25497) at oxo1BB68F8
好象是个断言失败,可以忽略过去,但是在对话框中不能忽略过去。
如果是取注册表值的话,下面的程序足够了。
要先用RegOpenKeyEx打开查找的注册表键 HKEY hKey;
DWORD dwType, dwSize = MAX_PATH;
char szPath[MAX_PATH];
LONG lResult = RegOpenKeyEx( HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\You saved Path",
0, KEY_READ, &hKey );
if( ERROR_SUCCESS != lResult )
return ""; lResult = RegQueryValueEx( hKey, "My Path", NULL,
&dwType, (BYTE*)szPath, &dwSize );
RegCloseKey( hKey );
if( ERROR_SUCCESS != lResult )
return ""; CString strGetVal = _T(szPath);
return strGetVal;
感谢大家!揭贴!