VC6 BUG 乎?

modnar 2006-02-07 10:45:08
这段代码在DEBUG下结果正常,在RELEASE下没结果?

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"

int main(int argc, char* argv[])
{
HKEY hKey;
char szProductType[80] = {0};
long dwBufLen;

RegOpenKeyEx( HKEY_CLASSES_ROOT,"CLSID\\{000C101C-0000-0000-C000-000000000046}\\ProgId",0, KEY_QUERY_VALUE, &hKey );
RegQueryValue(hKey , NULL , szProductType , &dwBufLen);
RegCloseKey(hKey);

printf(szProductType);
printf("\n");
return 0;
}

...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangk 2006-02-07
  • 打赏
  • 举报
回复
debug时long dwBufLen;
dwBufLen初始值为)0xCC,所以可以读出来。而Release时为0。
折腾_苏州 2006-02-07
  • 打赏
  • 举报
回复
程设置里面选NOT Using MFC,把#include "stdafx.h"改为#include "afx.h"在VC6.0下RELEASE测试有数据
折腾_苏州 2006-02-07
  • 打赏
  • 举报
回复
楼上的,你的工程设置里面是不是用了MFC支持啊?选NOT Using MFC就好了
modnar 2006-02-07
  • 打赏
  • 举报
回复
看来以后看见[in, out]参数就要小心一点了,MSDN有时候也靠不住啊
lzzqqq 2006-02-07
  • 打赏
  • 举报
回复
project->setting
左上角下拉框选择win32 debug
右边属性而Link->Object/Library modules 的输入框后面追加 Advapi32.lib
lzzqqq 2006-02-07
  • 打赏
  • 举报
回复
同意倒之.msdn中对ReadQueryValue最后一个参数的解释是这样的:
[in, out] Pointer to a variable that specifies the size of the buffer pointed to by the lpValue parameter, in bytes. When the function returns, this variable contains the size of the data copied to lpValue, including any terminating null characters.
Snow_Ice11111 2006-02-07
  • 打赏
  • 举报
回复
我的刚好相反,去掉第一行后在Release下运行正常,在Debug下出现如下错误:
Linking...
MyC.obj : error LNK2001: unresolved external symbol __imp__RegCloseKey@4
MyC.obj : error LNK2001: unresolved external symbol __imp__RegQueryValueA@16
MyC.obj : error LNK2001: unresolved external symbol __imp__RegOpenKeyExA@20
Debug/MyC.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

MyC.exe - 4 error(s), 0 warning(s)

期待楼下的回复!
modnar 2006-02-07
  • 打赏
  • 举报
回复
谢谢!
但是MSDN的Sample就是这样的。
在VC2003里是正常的。
而且,如果我用别的调试器调试Release的exe,结果也是正常的,但是就是直接运行不行。
wangk 2006-02-07
  • 打赏
  • 举报
回复
你的用法不对!改成:

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"

int main(int argc, char* argv[])
{
HKEY hKey;
char szProductType[80] = {0};
long dwBufLen = 80;

RegOpenKeyEx( HKEY_CLASSES_ROOT,"CLSID\\{000C101C-0000-0000-C000-000000000046}\\ProgId",0, KEY_QUERY_VALUE, &hKey );
RegQueryValue(hKey , NULL , szProductType , &dwBufLen);
RegCloseKey(hKey);

printf(szProductType);
printf("\n");
return 0;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧