• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

关于RegDeleteValue的一个问题

naixian1983 2008-04-21 04:21:14


本人程式里有一个check box,当选择check box时,利用RegSetValueEx使一个程式开机后自动运行(已实现),当不选择check box时,利用RegDeleteValue删除注册表,问题再这里出现了,头三次不管时选择还是不选择check box,都不可以删除注册表,但三次选择完后,当不选择check box时就可以删除注册表了,不知道为什么会这样,是我的check box有问题,还是RegDeleteValue有问题


void CTestHookDlg::OnCheck1()
{
// TODO: Add your control notification handler code here

UpdateData(true);


if(((CButton *)GetDlgItem(IDC_CHECK1))-> GetCheck())
{
AutoRun();

}
else
{
StopAutoRun();

}

UpdateData(false);
}


void CTestHookDlg::AutoRun()
{

strPath="C:\\Documents and Settings\\HOOK1\\TestHook\\Release\\TestHook.exe";

str="Software\\Microsoft\\Windows\\CurrentVersion\\Run";

if (::RegOpenKey(HKEY_LOCAL_MACHINE,str, &hRegKey)==ERROR_SUCCESS)
{
_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_PATH+1),NULL);
strPath.ReleaseBuffer();
str.ReleaseBuffer();

RegSetValueEx(hRegKey,str, 0, REG_SZ, (CONST BYTE *)strPath.GetBuffer(0), strPath.GetLength());



}


UpdateData(false);
}

void CTestHookDlg::StopAutoRun()
{


RegDeleteValue(hRegKey,str);



}

...全文
272 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ringphone 2008-04-21
代码有问题,StopAutoRun必须先执行过AutoRun才有效,否则hRegKey是无效句柄
OnCheck1里面决定设置自启动与否,则必须先选中check box,设置自启动,然后再取消选择才能删除。我没用过MFC,因此不知道在这个事件里UpdateData(true);是否有效,如果是无效的,则第一次选择,事件里获取到的是未选择状态,此时hRegKey无效,删除无效,再选择,设置自启动,第三次选择,删除成功,这就是三次选择的由来。
回复
greatws 2008-04-21
如果一开始IDC_CHECK1在CHECKED状态,你点一下,变为UNCHECKED,然后直接执行的是这段代码
void CTestHookDlg::StopAutoRun()
{
RegDeleteValue(hRegKey,str);
}

则肯定是无效的,因为没有使用RegOpenKey来打开注册表



回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-21 04:21
社区公告

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