项目中需要在网站的后台管理中,备份oracle数据库,在服务器上制定目录备份并提供给客户端下载。
一、使用Process类,调用cmd.exe,其中command字符形式
String.Format(" exp
{0}/{1}@{2} file={3} full=y", userName, pwd, dataService, filePath)
代码
1 Protected Sub RunCmd(ByVal command As String)
2 Dim cmd As New Process
3 '获得系统信息,使用的是 systeminfo.exe 这个控制台程序
4 cmd.StartInfo.FileName = "cmd.exe"
5 cmd.StartInfo.Arguments = "/c " & command
6 '将cmd的标准输入和输出全部重定向到.NET的程序里
7 cmd.StartInfo.UseShellExecute = False '此处必须为false否则引发异常
8 cmd.StartInfo.RedirectStandardInput = True '标准输入
9 cmd.StartInfo.RedirectStandardOutput = True '标准输出
10 '不显示命令行窗口界面
11 cmd.StartInfo.CreateNoWindow = True
12 cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
13
14 cmd.Start() '启动进程
15
16 '获取输出
17 '需要说明的:此处是指明开始获取,要获取的内容,
18 '只有等进程退出后才能真正拿到
19 cmd.StandardOutput.ReadToEnd()
20
21 cmd.WaitForExit() '等待控制台程序执行完成
22 cmd.Close() '关闭该进程
23 End Sub
注意相应文件夹要有写的权限,程序在调试时,能够生成备份文件,但发布到IIS上之后,不能生成备份文件。
原因是默认情况下,IIS不允许调用cmd.exe,需要设置machine.config文件,修改权限
在<System.Web>配直节下,增加<processModel userName="SYSTEM" enable="true" />
重新启动电脑,备份成功,功能是实现了,但大家要注意这样设置后,服务器安全方面很危险,请谨慎!!!
本文作者:网友 来源: http://www.cnblogs.com/muer/archive/2010/03/25/1695293.html
CIO之家 www.ciozj.com 微信公众号:imciow