大家帮忙看看这里是哪里出了问题,怎么显示开机启动设置成功了却不能启动呢?
void autorun_zzh::OnButtonZzhOk() 
{ //实现开机自动启动
CString StrFilter = "可执行程序(*.exe)|*.exe|所有文件(*.*)|*.*|";
CFileDialog Dlg(TRUE, NULL, NULL, NULL, StrFilter, this);
HKEY hKey;
LPCTSTR StrKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
if (ERROR_SUCCESS == ::RegOpenKeyEx (HKEY_CURRENT_USER, StrKey, NULL, KEY_ALL_ACCESS, &hKey))
{
CString Value = Dlg.GetPathName();
LPCSTR KeyValue = Dlg.GetFileTitle();
if (ERROR_SUCCESS == ::RegSetValueEx(hKey, (LPCTSTR)KeyValue,
0, REG_SZ, (BYTE *)(LPCSTR)Value, strlen(Value) + 1))
{
MessageBox("开机启动设置成功!","提示",MB_OK);
}
::RegCloseKey(hKey);
}
else MessageBox("出现错误,请重新试一下!","提示",MB_OK);

}
大家看看怎么回事?

解决方案 »

  1.   

    ::RegSetValueEx(hKey, (LPCTSTR)KeyValue,
                0, REG_SZ, (BYTE *)(LPCTSTR)Value, strlen(Value) + 1))
      

  2.   

    你的CFileDialog都没显示出来你没发现吗?后面的CString Value = Dlg.GetPathName();都没有值,怎么会写注册表?
        //实现开机自动启动
    CString StrFilter = "可执行程序(*.exe)|*.exe|所有文件(*.*)|*.*|";
    CFileDialog Dlg(TRUE, NULL, NULL, NULL, StrFilter, this);
    Dlg.DoModal();//这里显示对话框选择可执行程序
    HKEY hKey;
    LPCTSTR StrKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
    if (ERROR_SUCCESS == ::RegOpenKeyEx (HKEY_CURRENT_USER, StrKey, NULL, KEY_ALL_ACCESS, &hKey))
    {
    CString Value = Dlg.GetPathName();
    CString KeyValue = Dlg.GetFileTitle();//这里不要用LPCSTR,因为它只是个地址
    if (ERROR_SUCCESS == ::RegSetValueEx(hKey, (LPCTSTR)KeyValue,
    0, REG_SZ, (BYTE *)(LPCSTR)Value, strlen(Value) + 1))
    {
    MessageBox("开机启动设置成功!","提示",MB_OK);
    }
    ::RegCloseKey(hKey);
    }
    else MessageBox("出现错误,请重新试一下!","提示",MB_OK);
      

  3.   

    设置是否成功看注册表的相关键值就可以
    如果设置没有问题那就看你是什么系统了
    vista以上需要过UAC
      

  4.   

        //可以参考一下
        HKEY hKey;           
        //找到系统的启动项 
        LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; 
        //打开启动项Key 
        long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);     转自:http://www.cloay.com/forum.php?mod=viewthread&tid=33&page=
      

  5.   

    这里有个桌面飘雪例子,实现了开机自启动,你可以参考一下。我编译以后,运行了一下,360安全卫士还提醒了。网址:http://www.cloay.com/forum.php?mod=viewthread&tid=33&page=
      

  6.   

    我以前也写了一个,刚开始也失败,原因是 我是win7, 权限不够。所以要提升自己的权限。你用管理员身份运行。而且,我当时添加注册表。360也报毒了~~