遇到一个诡异的regedit.exe程序问题

  最近在调试一个注册表操作相关的程序。调试注册表写入代码时发现了一件奇怪的事情。用RegSetValue API执行注册表写入操作,该函数返回执行成功,但是通过regedit.exe查看注册表时却发现内容没有被修改(重新启动regedit,按F5刷新均告无效)。一开始我反复调试,以为肯定是写入失败了,但API确实返回了执行成功。于是我试着通过RegQueryValueEx执行读取操作,居然能读到我修改到的值。

  最后不得不怀疑是regedit.exe程序的问题。于是下载了一个第三方的注册表工具RegWorksshop.exe,经过查看,果然代码是成功执行了写入操作。但regedit.exe的显示却是错误的。

  另外这个问题只在我一台机器上才出现,到其它机器又没这个问题了,很诡异。但是无论如何,吸取一个教训。查看调试结果不能光依赖系统自带的工具啊。它们也不是最可靠的。

一个诡异的C++程序问题,求高手指教

05-05

问题1:wcout无法输出宽字符串rn问题2:程序运行退出时会弹出错误对话框rnrn[code=c]rn// Proxy.cpp : 定义控制台应用程序的入口点。rn//rnrn#include "stdafx.h"rn#include rn#include rnrnrnclass CSchoolGirlrnrnpublic:rn CSchoolGirl():m_pName(0)rn rn m_pName = new wchar_t[20];rn rn virtual~CSchoolGirl()rn rn if (m_pName)rn rn delete m_pName;rn m_pName = NULL;rn rn rnrnpublic:rn bool SetGirlName(wchar_t* pName)rn rn if (m_pName!=NULL && pName!=NULL)rn rn wcscpy_s(m_pName, 20, pName);rn return true;rn rn return false;rnrn rn wchar_t* GetGirlName()rn rn return m_pName;rn rnprivate:rn wchar_t *m_pName;rn;rnrn/////////////////////////////////////////////rnclass CGiveGiftrnrnpublic:rn virtual void GiveDolls() = 0;rn virtual void GiveFlowers() = 0;rn virtual void GiveChocolate() = 0;rn;rnrn/////////////////////////////////////////////rnclass CPursuit:public CGiveGiftrnrnpublic:rn CPursuit(CSchoolGirl &mm)rn rn m_MM = mm;rn rn virtual~CPursuit() rn rn rnrnpublic:rn virtual void GiveDolls()rn rn wchar_t *pWstr = NULL;rn pWstr = m_MM.GetGirlName();rn // 输不出来 ????rn std::wcout << pWstr << L"送你洋娃娃" << std::endl;rn rn virtual void GiveFlowers()rn rn wchar_t *pWstr = NULL;rn pWstr = m_MM.GetGirlName();rn // 输不出来 ????rn std::wcout << pWstr << L"送你鲜花" << std::endl;rn rn virtual void GiveChocolate()rn rn wchar_t *pWstr = NULL;rn pWstr = m_MM.GetGirlName();rn // 输不出来 ????rn std::wcout << pWstr << L"送你巧克力" << std::endl;rn rnrnprivate:rn CSchoolGirl m_MM;rn;rnrn/////////////////////////////////////////////rnclass CProxy : CGiveGiftrnrnpublic:rn CProxy(CSchoolGirl &mm):m_pGG(0)rn rn m_pGG = new CPursuit(mm);rn rn rn virtual~CProxy()rn rn if (m_pGG)rn rn delete m_pGG;rn m_pGG = NULL;rn rn rnrnpublic:rn virtual void GiveDolls()rn rn m_pGG->GiveDolls();rn rn virtual void GiveFlowers()rn rn m_pGG->GiveFlowers();rn rn virtual void GiveChocolate()rn rn m_pGG->GiveChocolate();rn rnprivate:rn CPursuit *m_pGG;rn rn;rnrnint _tmain(int argc, _TCHAR* argv[])rnrn CSchoolGirl mm;rn mm.SetGirlName(L"王娇娇");rn CProxy MyProxy(mm);rn MyProxy.GiveDolls();rn MyProxy.GiveFlowers();rn MyProxy.GiveChocolate();rnrn return 0;rnrnrnrn[/code]

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭