数据恢复 2
- private void button1_Click(object sender, EventArgs e)
- {
- try
- {
- //检查文件是否存在
- if (!File.Exists(textBox1.Text.ToString()))
- {
- MessageBox.Show("输入文件不存在!");
- }
- else if (Convert.ToInt32(textBox2.Text) < 1) //覆盖次数大于1
- {
- MessageBox.Show("覆盖次数要大于1");
- }
- else
- {
- //初始化进程 命名空间 using System.Diagnostics
- Process da = new Process();
- //设置要启动应用程序或文档名
- da.StartInfo.FileName = @"C:\WINDOWS\system32\sdelete.exe";
- //设置要启动应用程序使用的一组命令行参数
- //参数:执行覆盖操作次数 删除文件路径
- da.StartInfo.Arguments = string.Format("-p {0} -q \"{1}\"",
- Convert.ToInt32(textBox2.Text), textBox1.Text.ToString());
- //设置窗口状态 隐藏窗口显示
- da.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
- //直接执行程序 不使用Shell打开
- da.StartInfo.UseShellExecute = false;
- //输入流 输出流 错误写入流
- da.StartInfo.RedirectStandardInput = true;
- da.StartInfo.RedirectStandardOutput = true;
- da.StartInfo.RedirectStandardError = true;
- //不创建窗口,静默模式
- da.StartInfo.CreateNoWindow = true;
- //开始执行进程
- da.Start();
- //从输出流中读取程序输出
- string output = da.StandardOutput.ReadToEnd();
- //等待程序退出
- da.WaitForExit();
- //文件不存在记录输出流信息
- if(File.Exists(textBox1.Text.ToString()))
- {
- richTextBox1.AppendText(output);
- }
- }
- }
- catch (Exception msg) //异常处理
- {
- MessageBox.Show(msg.Message);
- }
- }
但是,虽然已经把sdelete.exe放置于“C:\windows\system32”文件夹下,使用cmd运行才能正确删除,但当通过C#代码调用时总是会显示错误"系统找不到指定文件".这让我万分伤心啊,但同时该方法的不足之处是需要用户放置sdelete程序,因此我需要寻求新的方法实现粉碎文件.
但是代码中所涉及的使用Process的方法还是值得大家学习的,我们还可以通过它实现很多功能,如下:
- //IE浏览器打开百度
- Process.Start("IExplore.exe", "http://www.baidu.com/");
- //打开库
- Process.Start("explorer.exe");
- //打开Excel办公软件
- Process.Start("EXCEL.exe");
- //打开cmd
- Process.Start("cmd.exe");
关于Process的详细用法建议大家阅读下面这篇优秀文章:http://blog.csdn.net/chen_zw/article/details/7896264
下面是调用cmd.exe程序实现ipconfig查看功能,但是当使用"sdelete -p 2 "F:\test.txt""时还是不能运行,我也不知道为什么?不知道怎么访问Sdelete.exe程序,使用管理员权限运行也不行.
- string command = "";
- System.Diagnostics.Process p = new System.Diagnostics.Process();
- p.StartInfo.FileName = "cmd.exe"; //文件名
- command = "/c" + "ipconfig";
- //command = "/c" + "sdelete -p 3 \"F:\\bbb.txt\"";
- p.StartInfo.Arguments = command; //参数
- p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
- p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
- p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
- p.StartInfo.RedirectStandardError = true; //重定向标准错误输出
- p.StartInfo.CreateNoWindow = true; //不显示程序窗口
- p.Start(); //启动程序
- string output = p.StandardOutput.ReadToEnd();
- richTextBox1.AppendText(output);
cmd中ipconfig的运行结果如下,但使用sdelete参数就是不行(>.<):
总
版权声明:本文为博主原创文章,未经博主允许不得转载。