使用C#执行DOS命令

时间:2022-09-02 20:19:40
如下代码:

private string RunCommand(string command)
{
    //實例一個Process類,啟動一個獨立進程
    Process p = new Process();

    //Process類有一個StartInfo屬性,這個是ProcessStartInfo類,包括了一些屬性和方法,下面我們用到了他的幾個屬性:

    p.StartInfo.FileName = "cmd.exe";           //設定程序名
    p.StartInfo.Arguments = "/c " + command;    //設定程式執行參數
    p.StartInfo.UseShellExecute = false;        //關閉Shell的使用
    p.StartInfo.RedirectStandardInput = true;   //重定向標準輸入
    p.StartInfo.RedirectStandardOutput = true;  //重定向標準輸出
    p.StartInfo.RedirectStandardError = true;   //重定向錯誤輸出
    p.StartInfo.CreateNoWindow = true;          //設置不顯示窗口
    p.Start();   //啟動

    //p.StandardInput.WriteLine(command);       //也可以用這種方式輸入要執行的命令
    //p.StandardInput.WriteLine("exit");        //不過要記得加上Exit要不然下一行程式執行的時候會當機

    return p.StandardOutput.ReadToEnd();        //從輸出流取得命令執行結果

}


可以实现调用DOS命令.

在命令提示行工具下使用aspnet_regiis.exe -pef "connectionStrings" "web.config路径"命令,可以实现对连接字符串进行加密.

现在要实现单击加密按钮,程序根据VS不同版本自动获得命令提示行的路径,执行上面的命令实现加密操作.

问题是如何检测VS版本(VS2003以后的版本),并在命令提示行工具下调用?








5 个解决方案

#1


在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了c#执行DOS命令,并返回结果。
  //dosCommand Dos命令语句public string Execute(string dosCommand)
  { return Execute(dosCommand, 超时时间);}
  /// <summary> /// 执行DOS命令,返回DOS命令的输出/// </summary> /// <param name="dosCommand">dos命令</param> /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待</param> /// <returns>返回DOS命令的输出</returns> public static string Execute(string command, int seconds)
  { string output = ""; //输出字符串if (dosCommand != null && dosCommand != "")
  { Process process = new Process();//创建进程对象ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.FileName = "cmd.exe";//设定需要执行的命令startInfo.Arguments = "/C " + command;//设定参数,其中的“/C”表示执行完命令后马上退出startInfo.UseShellExecute = false;//不使用系统外壳程序启动startInfo.RedirectStandardInput = false;//不重定向输入startInfo.RedirectStandardOutput = true; //重定向输出startInfo.CreateNoWindow = true;//不创建窗口process.StartInfo = startInfo;try { if (process.Start())//开始进程{ if (seconds == 0)
  { process.WaitForExit();//这里无限等待进程结束} else { process.WaitForExit(seconds); //这里等待进程结束,等待时间为指定的毫秒} output = process.StandardOutput.ReadToEnd();//读取进程的输出} catch { } finally { if (process != null)
  process.Close();} return output;}

#2


引用楼主 li_wenbiao 的回复:
▪ 网格计算、高性能计算、并行计...▪ 云技术开发所面临的问题有?▪ 云服务模式:SaaS、PaaS和IaaS...▪ ERP财务系统和云计算▪ 大型企业的CIO们是如何看待云计...
如下代码:

C# code


private string RunCommand(string command)
{
    //實例一個Process類,啟動一個獨立進程
    Proc……


老大,你这个代码我不是给了吗??
  问题请看清楚!!!!!!!!!!!!!!!!!!!!!!!!

#3


System.Diagnostics.ProcessStartInfo ProcessInfo=new System.Diagnostics.ProcessStartInfo();

ProcessInfo.FileName="notepad.exe";
ProcessInfo.Arguments=strFileName;
ProcessInfo.WorkingDirectory="c:\\";
System.Diagnostics.Process.Start(ProcessInfo);

以前做的一个用记事本打开文件的,应该差不都!

#4


没接触过这方面,占地帮顶加等答案 使用C#执行DOS命令

#5


引用 3 楼 xmujoe2011 的回复:
System.Diagnostics.ProcessStartInfo ProcessInfo=new System.Diagnostics.ProcessStartInfo();

ProcessInfo.FileName="notepad.exe";
ProcessInfo.Arguments=strFileName;
ProcessInfo.WorkingDirectory="c:\……


汗~~~  又一个不看问题的!!

#1


在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了c#执行DOS命令,并返回结果。
  //dosCommand Dos命令语句public string Execute(string dosCommand)
  { return Execute(dosCommand, 超时时间);}
  /// <summary> /// 执行DOS命令,返回DOS命令的输出/// </summary> /// <param name="dosCommand">dos命令</param> /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待</param> /// <returns>返回DOS命令的输出</returns> public static string Execute(string command, int seconds)
  { string output = ""; //输出字符串if (dosCommand != null && dosCommand != "")
  { Process process = new Process();//创建进程对象ProcessStartInfo startInfo = new ProcessStartInfo();startInfo.FileName = "cmd.exe";//设定需要执行的命令startInfo.Arguments = "/C " + command;//设定参数,其中的“/C”表示执行完命令后马上退出startInfo.UseShellExecute = false;//不使用系统外壳程序启动startInfo.RedirectStandardInput = false;//不重定向输入startInfo.RedirectStandardOutput = true; //重定向输出startInfo.CreateNoWindow = true;//不创建窗口process.StartInfo = startInfo;try { if (process.Start())//开始进程{ if (seconds == 0)
  { process.WaitForExit();//这里无限等待进程结束} else { process.WaitForExit(seconds); //这里等待进程结束,等待时间为指定的毫秒} output = process.StandardOutput.ReadToEnd();//读取进程的输出} catch { } finally { if (process != null)
  process.Close();} return output;}

#2


引用楼主 li_wenbiao 的回复:
▪ 网格计算、高性能计算、并行计...▪ 云技术开发所面临的问题有?▪ 云服务模式:SaaS、PaaS和IaaS...▪ ERP财务系统和云计算▪ 大型企业的CIO们是如何看待云计...
如下代码:

C# code


private string RunCommand(string command)
{
    //實例一個Process類,啟動一個獨立進程
    Proc……


老大,你这个代码我不是给了吗??
  问题请看清楚!!!!!!!!!!!!!!!!!!!!!!!!

#3


System.Diagnostics.ProcessStartInfo ProcessInfo=new System.Diagnostics.ProcessStartInfo();

ProcessInfo.FileName="notepad.exe";
ProcessInfo.Arguments=strFileName;
ProcessInfo.WorkingDirectory="c:\\";
System.Diagnostics.Process.Start(ProcessInfo);

以前做的一个用记事本打开文件的,应该差不都!

#4


没接触过这方面,占地帮顶加等答案 使用C#执行DOS命令

#5


引用 3 楼 xmujoe2011 的回复:
System.Diagnostics.ProcessStartInfo ProcessInfo=new System.Diagnostics.ProcessStartInfo();

ProcessInfo.FileName="notepad.exe";
ProcessInfo.Arguments=strFileName;
ProcessInfo.WorkingDirectory="c:\……


汗~~~  又一个不看问题的!!