Visual studio 2008 vs2008中调试发布模式的帮助

Visual 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

我编写了一些基本代码,用RegGetValue从注册表中读取,它在调试模式下运行良好。但是在发布模式下,它无法读取注册表值。没有任何错误,只是不起作用。如何使此功能在释放模式下工作?Windows7x64与2008

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,
    &regval,
    &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。很高兴这有帮助。我将把它添加到答案中,而不是作为评论。