//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2016 , ZTO , Ltd .
//------------------------------------------------------------------------------------- using System;
using System.Diagnostics;
using System.IO;
using Microsoft.Win32; namespace ZTO.TestDb
{
/// <summary>
/// WinRAR压缩操作帮助类
///
/// 修改纪录
///
/// 2016-5-9 版本:1.0 YangHengLian 创建主键,注意命名空间的排序,测试非常好。
/// 2016-5-13 加上了自动获取WinRAR安装路径的函数,不管是64位还是32位系统,
///
/// 版本:1.0
///
/// <author>
/// <name>YangHengLian</name>
/// <date>2016-5-9</date>
/// </author>
/// </summary>
public class WinRarHelper
{
#region 属性
private string _winRarPath; /// <summary>
/// WinRAR安装路径,可以自己设置,默认读取系统注册表
/// </summary>
public string WinRarPath
{
get
{
return string.IsNullOrEmpty(_winRarPath) ? GetWinRarInstallPath() : _winRarPath;
}
set
{
_winRarPath = value;
}
}
#endregion /// <summary>
/// 解压到某个文件夹中
/// </summary>
/// <param name="rarFilePath">rar文件全路径</param>
/// <param name="unRarPath">解压到哪个文件夹</param>
/// <param name="password">解压密码</param>
/// <param name="isOverride">是否覆盖</param>
public void UnRar(string rarFilePath, string unRarPath, string password = null, bool isOverride = false)
{
if (IsSetUpWinRar())
{
throw new ArgumentNullException("WinRAR未安装");
}
RunCmd(string.Format("x{0} -o{1} {2} {3}", (password == null ? "" : " -p" + password), (isOverride ? "+" : "-"), rarFilePath, unRarPath));
} /// <summary>
/// 压缩文件或者文件夹为压缩包
/// </summary>
/// <param name="filePath">需要压缩的文件/文件夹全路径</param>
/// <param name="saveFilePath">压缩文件保存全路径</param>
/// <param name="isOverride">是否覆盖</param>
/// <param name="password">压缩文件密码</param>
public void Rar(string filePath, string saveFilePath, bool isOverride = false, string password = null)
{
if (IsSetUpWinRar())
{
throw new ArgumentNullException("WinRAR未安装");
}
RunCmd(string.Format("a{0} -o{1} -ep2 -r {2} {3}", (password == null ? "" : " -p" + password), (isOverride ? "+" : "-"), saveFilePath, filePath));
} /// <summary>
/// 解压是否安装了WinRAR程序
/// </summary>
/// <returns></returns>
public bool IsSetUpWinRar()
{
if (!string.IsNullOrEmpty(WinRarPath))
{
return File.Exists(WinRarPath);
}
var inistallPath = GetWinRarInstallPath();
if (string.IsNullOrEmpty(inistallPath))
{
return false;
}
WinRarPath = inistallPath;
return true;
} /// <summary>
/// 从注册表中获取WinRAR的安装路径
/// </summary>
/// <returns></returns>
public string GetWinRarInstallPath()
{
var openKey = @"SOFTWARE\Wow6432Node\WinRAR";//64位注册表
if (IntPtr.Size == )
{
openKey = @"SOFTWARE\WinRAR";//32位注册表路径
}
RegistryKey appPath = Registry.LocalMachine.OpenSubKey(openKey);
if (appPath != null)
{
// WinRAR安装具体路径
string path = appPath.GetValue("exe32").ToString();
if (File.Exists(path))
{
return path;
}
}
return null;
} /// <summary>
/// 执行rar内部命令
/// </summary>
/// <param name="cmd">要执行的命令</param>
public void RunCmd(string cmd)
{
using (var p = new Process())
{
p.StartInfo.FileName = WinRarPath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.Arguments = cmd;
p.Start();
p.WaitForExit();
}
}
}
} WinRarHelper

WinRAR压缩操作帮助类的更多相关文章

  1. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  2. WinRarHelper帮助类

    WinRarHelper帮助类 关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩 ...

  3. 如何用C#+WinRAR 实现压缩 分类:

    前提:必须安装 WinRAR 1. 工具类 using System; using System.Diagnostics; using System.IO; using Microsoft.Win32 ...

  4. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  5. .NET 4.5 中新提供的压缩类

    Windows8 的开发已经如火如荼开始了,在 Windows8 中提供的 .NET Framework 已经更新到了 4.5 版,其中又增加了一些新的特性,对压缩文件的支持就是其中之一. 在 4.5 ...

  6. ASP.NET利用WINRar实现在线解压缩文件

    一.肯定是服务器必须装了winrar这个软件了. 二.创建Helper类,如下: using System; using System.Collections.Generic; using Syste ...

  7. WinRAR安装、破解与去除弹窗广告

    本教程教大家怎么破解WinRAR压缩软件和去除广告(教程属于总结类,总结网上给出的方法,并且亲测有效,非本人原创)WinRAR5.40 2016.10.06 首先下载WinRAR软件,去它的官方英文网 ...

  8. winrar 压缩文件方法

    问题描述: 我要一些大的文件进行压缩,看了网上有很多类拟的写法.但在我这都存在两个问题. 1.就是他们都是通过注册表找到rar的exe目录.我安装好winrar后,虽然注册表有,但那个目录一直报一个错 ...

  9. duilib入门之贴图描述、类html文本描述、动态换肤、Dll插件、资源打包

    转载自duilib入门文档 贴图描述: Duilib的表现力丰富很大程度上得益于贴图描述的简单强大.Duilib的贴图描述分为简单模式和复杂模式两种. 简单模式使用文件名做为贴图描述内容,在这种方式下 ...

随机推荐

  1. linux进程命令

    1. ps命令 命令 命令名称: 命令名称: ps 功能: 功能: 查询正在执行的进程 语法: 可选参数] 语法: ps [可选参数] 描述: 命令提供 命令提供Linux系统中正在发生的事情的   ...

  2. C++学习笔记30:模板与型式参数化

    转型操作 接受目标型式作为模板参数 Programmer *p = dynamic_cast<Programmer*>(e) 模板工作原理 使用template<typename T ...

  3. Centos6.5 gitlab安装使用

    公司从svn转到git做版本管理,我搜了一下网上git的服务器,包括gitosis,gitolite等.一开始我是用的是gitosis作为git服务器的,安装过程还算比较简单,整个服务使用python ...

  4. apache安全配置---禁止访问特定文件,防止日志、压缩包被下载

    指定禁止访问 某些后缀的文件 修改apache配置httpd.conf,在最后加上配置后,重启apache <Files ~ ".txt|.log|.zip|.gz|.sql" ...

  5. drozer安装之夜深模拟器

    首先下载drozer的安装包    可以直接到官网下载:https://labs.mwrinfosecurity.com/tools/drozer/ 安装 解压压缩包其中 setup.exe 为Win ...

  6. Ubuntu Sublime Text 设置等宽字体

    { "font_face": "DejaVu Sans Mono", "font_size": 10, "word_wrap&qu ...

  7. IIS 发布 异常信息 AspNetInitClrHostFailureModule 的解决办法

    昨天在一个客户那里使用Server 2008服务器配置IIS,都配置好之后竟然出现了错误信息,以前没有遇到过 "AspNetInitClrHostFailureModule",于是 ...

  8. ubuntu14.04 下emacs 24 配置

    目的: 配置emacs 24 适合编程开发 主要参考JerryZhang的配置(Emacs 简易教程) http://www.perfect-is-shit.com/emacs-simple-tuto ...

  9. metagenome 简介

    宏基因组 ( Metagenome)(也称微生物环境基因组 Microbial Environmental Genome, 或元基因组) .是由 Handelsman 等 1998 年提出的新名词, ...

  10. c# 引用百度地图

    <script type="text/javascript"> //创建和初始化地图函数 var map = new BMap.Map("home" ...