例如:我安装了一个xxx的应用程序,怎么编写软件在注册表里边查找关键字xxx得到该程序的安装目录!
或者那位高手有更好的方法,在此先谢过!

解决方案 »

  1.   

    软件安装信息
    注册表
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    这里每一个子记录集的DisplayName段就是一个software的名字 UninstallString则是反安装需要执行的文件以及参数
      

  2.   

    meetinghl2002(阿谷)--->你先得知道他记在注册表中哪个位置了??
    ==============
    程序安装的时候,是系统自动写到注册表去还是编写这个应用程序的人设置它写到那个位置?
      

  3.   

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    这里每一个子记录集的DisplayName段就是一个software的名字 UninstallString则是反安装需要执行的文件以及参数
      

  4.   

    那得看你安装的是什么程序了,每个程序对注册表的操作都可能不一样,但我想大都有规律可寻,如sybase12.0客户端装完后,会在HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI下创建一个Sybase ASE ODBC Driver,里头的Driver键值就是sybase的安装目录
      

  5.   

    -- zhangnanonnet(鱼欢)
    shootingstars(有容乃大,无欲则刚)
    Pipi0714(皮皮0714) ( ) 能找到他的安装目录了!D:\PROGRA~1\Tencent\RTXSDK\ddd.ini,VC里边怎么修改里边的内容阿?VC菜鸟,呵呵
      

  6.   

    程序安装的时候,是系统自动写到注册表去还是编写这个应用程序的人设置它写到那个位置?
    当然是编写安装程序的人记录在注册表里的,以后升级什么的都方便。大部分安装程序制作工具都是放到注册表的一个什么installpath之类的键下的,具体我忘了
      

  7.   

    oid
    CMacroConfigureDlg::SetOfficePath()
    {
      char szOfflicePath[MAX_PATH];
      
      QueryRegistry( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Winword.exe", 
                     "Path", szOfflicePath );
      //MessageBox( szOfflicePath );
      if( strcmp( szOfflicePath, "" ) != 0 ) {
        ((CButton* )GetDlgItem( IDBROWSE ))->EnableWindow( FALSE );
        m_Edit.EnableWindow( FALSE );
      }   m_Edit.SetWindowText( szOfflicePath );
      return;
    }void 
    CMacroConfigureDlg::QueryRegistry( LPCTSTR dataSet, LPCTSTR KeyName, char* pDest )
    {
      HKEY hKEY;  //begin -- Open Key 
      long ret0=( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE,dataSet,0,KEY_READ,&hKEY ) );
      if( ret0!=ERROR_SUCCESS )  return;  LPBYTE valueGet = new BYTE[80];
      DWORD type_1 = REG_SZ;     
      DWORD cbData_1 = 80;          //begin -- Query Key And Get Key's Value
      long ret1=::RegQueryValueEx(hKEY, KeyName, NULL, &type_1,valueGet,&cbData_1);
      if(ret1!=ERROR_SUCCESS) return;
      char strValueGet[100]; 
      wsprintf(strValueGet, "%s", (LPSTR) valueGet);
      delete[] valueGet;  ::RegCloseKey(hKEY);
      strcpy( pDest, strValueGet );
      return;
    }
      

  8.   

    程序安装的时候,是系统自动写到注册表去还是编写这个应用程序的人设置它写到那个位置?
    当然是编写安装程序的人记录在注册表里的,以后升级什么的都方便。大部分安装程序制作工具都是放到注册表的一个什么installpath之类的键下的,具体我忘了