在Debug版本下可以写入,删除注册表,在release下调试也是可以操作注册表。但是编译成release版本后就不能操作注册表了,求教大神怎么解决?

解决方案 »

  1.   


    这是写注册表的函数
    BOOL SysNormalSet::SetAutoRun(CString strPath)  
    {
    //将进程信息写入注册表
    CString   str;     
    HKEY   hRegKey=NULL;    
    BOOL   bResult; 
    GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH); str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,str,0,KEY_ALL_ACCESS,&hRegKey)!=ERROR_SUCCESS)    
    bResult=FALSE;    
    else    
    {
    if(RegSetValueEx(hRegKey,keyValueName,0,REG_SZ,(CONST BYTE *)strPath.GetBuffer(),strPath.GetLength())!=ERROR_SUCCESS )
    {
    bResult=FALSE; 
    }
    else
    {
    bResult=TRUE; 
    ::RegFlushKey(hRegKey);
    }         

    ::RegCloseKey(hRegKey);
    return   bResult;   
    }
      

  2.   


    调试状态下可以,直接运行release不行
      

  3.   

    把Realse加上调试信息试试在哪里出的问题
      

  4.   


    在release下调试可以写进注册表。
    是不是说release下必须手动设置管理员权限?
      

  5.   

    长度用 strPath.GetLength()+1 试试看MSDN上有这样的说明
    cbData 
    The size of the information pointed to by the lpData parameter, in bytes. If the data is of type REG_SZ, REG_EXPAND_SZ, or REG_MULTI_SZ, cbData must include the size of the terminating null character or characters.
      

  6.   


    以管理员权限是可以的,在设置里面改下UAC Execution Level为requireAdministrator,运行的时候就会跳出是否以管理员权限运行了
      

  7.   


    以管理员权限是可以的,在设置里面改下UAC Execution Level为requireAdministrator,运行的时候就会跳出是否以管理员权限运行了
    以管理员权限运行可以那就行了啊,说明是权限问题