自己做了个小程序,需要加入这个功能,就是,如何判断我做的这个程序是否已经安装在系统内了?其实,好多程序都有检查是否安装这种功能,比如你安装了一个winrar,再安一次,会提醒你系统里已经安装了winrar.是不是要查询注册表什么的?需要用到什么函数??请不要说的太笼统"查注册表就行了""查标志位就行了"....
谢谢大家

解决方案 »

  1.   

    往注册表里写入注册信息,系统不重装你都能找到你的信息,不过被注册表监控而被拒绝的话就是另一回事了
    查询注册表: HKEY hKEY;
    LPCTSTR path="Software\\Microsoft\\MS Setup (ACME)\\User Info"; long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path, 0, KEY_READ,&hKEY); if(ret!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
    {
    MessageBox("错误: 查询无法打开有关的hKEY!");
    return;
    } unsigned char tmp[256]="\0";
    DWORD type=REG_SZ;
    DWORD size=80;
    ret=::RegQueryValueEx(hKEY,"DefName", NULL,&type,tmp,&size);
    if(ret!=ERROR_SUCCESS)
    {
    MessageBox("错误:无法查询有关注册表信息!");
    return;
    }
    CString tmpstring=CString(tmp);
    AfxMessageBox(tmpstring);
    ::RegCloseKey(hKEY);
    修改注册表: unsigned char tmp[256];
    sprintf((char *)tmp,"%s","hello");
    CString tmpstring=tmp; HKEY hKEY;
    DWORD type=REG_SZ;
    DWORD size=tmpstring.GetLength()+1;
    LPCTSTR path="Software\\Microsoft\\MS Setup (ACME)\\User Info" ; long ret=::RegOpenKeyEx(HKEY_CURRENT_USER,path,0,KEY_WRITE, &hKEY);
    if(ret!=ERROR_SUCCESS)

    MessageBox("错误: 修改无法打开有关的hKEY!");
    return; 
    }
    ret=::RegSetValueEx(hKEY,"DefName",NULL,type,tmp,size);
    if(ret!=ERROR_SUCCESS)

    MessageBox("错误: 无法修改有关注册表信息!");
    return;
    }
    ::RegCloseKey(hKEY);