利用process.start()启动WinRAR.exe执行压缩命令在本地运行正常,放到服务器时WinRAR.exe也正常启动了,但没有成功完成压缩指令

本文主要是介绍利用process.start()启动WinRAR.exe执行压缩命令在本地运行正常,放到服务器时WinRAR.exe也正常启动了,但没有成功完成压缩指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天在做一个网站的用户下载历史数据的功能,用户下载时服务器上的程序利用process.start()启动WinRAR.exe执行压缩命令,然后在将压缩包传给客户端。

在本地模拟时一切正常,可以完成下载,放到服务器时WinRAR.exe也正常启动了,可以在任务管理器上看到WinRAR.exe的进程,但没有成功完成压缩指令,也就是没有正常生成压缩文件,代码如下:

public void  compress(out bool bo, out TimeSpan times)

        {
            bo = false;
            //压缩文件
            string yasuoPathSave = "C:/test.rar";
            string yasuoPath = "C:/test";
            System.Diagnostics.Process pro = new System.Diagnostics.Process();
            pro.StartInfo.FileName = "C:\Program Files\WinRAR\WinRAR.exe";//WinRAR.exe所在路径
            pro.StartInfo.Arguments = string.Format("a {0} {1} -r",yasuoPathSave,yasuoPath);
 
            pro.Start();
            times = pro.TotalProcessorTime;
            bo = pro.WaitForExit(60000);//设定一分钟
            if (!bo)
                pro.Kill();
            pro.Close();
            pro.Dispose();
            return;

        }

网上找了好久也没有找到办法,最后突发灵感,可能和权限有关然后修改代码如下:

public void  compress(out bool bo, out TimeSpan times)

        {

    if(!System.IO.Directory.Exists("C:/temp"))

    {

          System.IO.Directory.CreateDirectory("C:/temp");
            }

    bo = false;
            //压缩文件
            string yasuoPathSave = "C:/temp/test.rar";
            string yasuoPath = "C:/test";
            System.Diagnostics.Process pro = new System.Diagnostics.Process();
            pro.StartInfo.FileName = "C:\Program Files\WinRAR\WinRAR.exe";//WinRAR.exe所在路径
            pro.StartInfo.Arguments = string.Format("a {0} {1} -r",yasuoPathSave,yasuoPath);
 
            pro.Start();
            times = pro.TotalProcessorTime;
            bo = pro.WaitForExit(60000);//设定一分钟
            if (!bo)
                pro.Kill();
            pro.Close();
            pro.Dispose();
            return;

        }

也就是将生成的rar文件不直接放到C盘下,而是放到C盘下的某一路径下,这样就避免了程序无法在根目录下直接写入文件的权限问题。

后来又找到另一个办法,就是给权限,操作如下:

Windows 系统->运行->regedit->HKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->Windows->CurrentVersion->Policies->System->EnableLUA将其值修改为0->重启云主机。

但这种办法可能会使云主机安全性降低,带来隐患,不过只是猜测。

这篇关于利用process.start()启动WinRAR.exe执行压缩命令在本地运行正常,放到服务器时WinRAR.exe也正常启动了,但没有成功完成压缩指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779397

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1