自己带个7-zip就可以,不用管人家装没装。

解决方案 »

  1.   

    从系统 Registry 里 
    看看 HKEY_CLASSES_ROOT\WinRAR 路径在不在?
    再读 HKEY_CLASSES_ROOT\WinRAR\shell\open\command 的值出来,
    它的值类似 "E:\Program Files\WinRar\WinRar.exe" "%1"
    设法取出第一段字符串,
    用它为值,判断硬盘里文件在不在,
    若在,那就是安装了。
    当然,这个值也是你要用来进行解压的必要参数。
      

  2.   

    不是有控件vclzip vclunzip吗
      

  3.   

    本来就不应该依赖用户的电脑是否装有rar,rar本来就是很小的东西,就像LS说的用vclzip或1楼说的带上7zip,使用命令行来调用7-zip来压缩和解压。
      

  4.   

    自己带rar的dll也可以,解压免费的
      

  5.   

    感谢各位的回答,只是我要解压的包是在linux下用tar命令生成的一个文件包比如123.tar.gz这个样的文件
    我试了一下用vclzip这个控件不能解压这种压缩包,只能用winrar这个软件解压,看来只能用读注册表的方式验证系统有没有安装winrar软件,但是没操作过注册表,试了一天都不行,感谢2楼给的思路。
      

  6.   

    或者用delphi的控件,或者带上winrar的rar.exe,unrar.exe,用命令行解决问题。
      

  7.   

    winara有绿色版不用安装也可使用。那你怎么检测?
      

  8.   

    gz是gzip格式的压缩文件,baidu一下delphi解压gzip,或者你自己到zlib网站下载个dll,里面有现成的gzip导出函数。我这边有个c++的代码给你参考,delphi的话直接翻译一下:
    int gzcompress(const char *read_file,const char *write_file)
    {
      gzFile g = gzopen(write_file,"wb");
      if (NULL == g)
        return gzip_error_file;
      AutoFuncClass auto1(AutoFunc(gzclose,g));
      void *buf = NULL;
      DWORD buf_size = 0;
      if (!LoadFileToBuffer(string2wstring(read_file),&buf,buf_size))
        return gzip_error_file;
      gzbuffer(g,8192);
      int ir = gzwrite(g,buf,buf_size);
      if (ir <= 0)
        return gzip_error_unknown;
      return gzip_error_success;  
    }
      

  9.   

    建议你在程序中自带第三方解压工具,比如7za.exe,这个貌似是支持tar.gz的解压的
    因为现在压缩软件众多,winrar不像以前那么高的安装量吧
    如果非要检测,参考3楼的办法即可,读取注册表中的键值就行了