Visual studio 2008 vs2008中调试发布模式的帮助
我编写了一些基本代码,用RegGetValue从注册表中读取,它在调试模式下运行良好。但是在发布模式下,它无法读取注册表值。没有任何错误,只是不起作用。如何使此功能在释放模式下工作?Windows7x64与2008Visual studio 2008 vs2008中调试发布模式的帮助,visual-studio-2008,visual-c++,Visual Studio 2008,Visual C++,我编写了一些基本代码,用RegGetValue从注册表中读取,它在调试模式下运行良好。但是在发布模式下,它无法读取注册表值。没有任何错误,只是不起作用。如何使此功能在释放模式下工作?Windows7x64与2008 DWORD sz, regval=0; RegCreateKeyEx( HKEY_CURRENT_USER, _T("Software\\App"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL
DWORD sz, regval=0;
RegCreateKeyEx(
HKEY_CURRENT_USER,
_T("Software\\App"),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
NULL,
&sz);
RegGetValue(
HKEY_CURRENT_USER,
_T("Software\\App"),
_T("Value"),
RRF_RT_ANY,
NULL,
®val,
&sz);
定义此代码如何在调试模式下正常工作 这段代码添加一个键,然后读取它下面的值,但没有代码添加值 如果这是完整的代码,那么在尝试读取之前需要添加一个名为value的值。请参阅以了解如何执行此操作
上面的代码似乎无法正确检索该值,因为必须在输入上设置sz以指示可用缓冲区的大小。如果没有完整的代码很难判断,但由于此值为REG_DWORD,因此它将是sz=sizeofDWORD;,比如说 DWORD sz,regval=0;RegCreateKeyExHKEY\当前\用户,\ t软件\\App,0,NULL,REG\选项\非易失性,KEY\所有\访问,NULL,NULL,&sz;RegGetValueHKEY_当前用户,_TSoftware\\App,_TValue,RRF_RT_ANY,NULL,®val,&sz;在你的问题中。不知道它是如何工作的已经不再是一个合理的借口了。好吧,对我的问题做一些澄清。我正在使用RegQueryValueEx读取现有注册表项REG_DWORD函数返回成功,但是缓冲区LPBYTE lpData不包含任何数据。此外,包含数据缓冲区LPDWORD lpcbData值大小的输出缓冲区确实提供了数据大小。此问题仅在发布模式下存在,在调试时,它会正确返回缓冲区数据。上面的代码无法正确检索值,因为必须在输入上设置sz以指示缓冲区的可用大小。如果没有完整的代码很难判断,但由于此值为REG_DWORD,因此它将是sz=sizeofDWORD;,例如,Thanx!这就是问题所在。sz未初始化,只是创建的。我认为它在调试模式下工作的原因是,在创建变量DWORD sz时,它填充了一个与0相反的值,因此RegQueryValueEx使用了默认值sz。很高兴这有帮助。我将把它添加到答案中,而不是作为评论。