C# 操作DOS命令

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
进来有项目需求用控制台应用程序开发,需要和远程的虚机进行交互,其实很简单,就是使用Process类调用cmd.exe
整了一下代码:

// 返回true则代表可以ping成功 
// remoteHost为对方IP 
public   static   bool  Ping( string  remoteHost) 

    
bool  Flag  =   false
    Process proc 
=   new  Process(); 
    
try  
    { 
        proc.StartInfo.FileName 
=   " cmd.exe "
        proc.StartInfo.UseShellExecute 
=   false
        proc.StartInfo.RedirectStandardInput 
=   true
        proc.StartInfo.RedirectStandardOutput 
=   true
        proc.StartInfo.RedirectStandardError 
=   true
        proc.StartInfo.CreateNoWindow 
=   true
        proc.Start(); 
        
string  dosLine  =   @" ping -n 1  "   +  remoteHost; 
        proc.StandardInput.WriteLine(dosLine); 
        proc.StandardInput.WriteLine(
" exit " ); 
        
while  ( ! proc.HasExited) 
        { 
            proc.WaitForExit(
500 ); 
        } 

        
string  pingResult  =  proc.StandardOutput.ReadToEnd(); 
        
if  (pingResult.IndexOf( " (0% loss) " !=   - 1
        { 
            Flag 
=   true
        } 
        proc.StandardOutput.Close() ; 
    } 
    
catch  (Exception ex) 
    { 
    } 
    
finally  
    { 
        proc.Close(); 
        proc.Dispose(); 
    } 
    
return  Flag; 
}
接下来就是使用net use连接对方机器

// 返回true则代表可以连接成功 
// remoteHost为对方IP userName为用户名 passWord为密码 
public   static   bool  Connect( string  remoteHost,  string  userName,  string  passWord) 

    
bool  Flag  =   false
    Process proc 
=   new  Process(); 
    
try  
    { 
        proc.StartInfo.FileName 
=   " cmd.exe "
        proc.StartInfo.UseShellExecute 
=   false
        proc.StartInfo.RedirectStandardInput 
=   true
        proc.StartInfo.RedirectStandardOutput 
=   true
        proc.StartInfo.RedirectStandardError 
=   true
        proc.StartInfo.CreateNoWindow 
=   true
        proc.Start(); 
        
string  dosLine  =   @" net use \\ "   +  remoteHost  +   "   "   +  passWord  +   "   "   +   "  /user: "   +  userName  +   " >NUL "
        proc.StandardInput.WriteLine(dosLine); 
        proc.StandardInput.WriteLine(
" exit " ); 
        
while  ( ! proc.HasExited) 
        { 
            proc.WaitForExit(
1000 ); 
        } 
        
string  errormsg  =  proc.StandardError.ReadToEnd(); 
        proc.StandardError.Close(); 
        
if  (String.IsNullOrEmpty(errormsg)) 
        { 
            Flag 
=   true
        } 
    } 
    
catch  (Exception ex) 
    { 
    } 
    
finally  
    { 
        proc.Close(); 
        proc.Dispose(); 
    } 
    
return  Flag; 
}
如果连接成功,则可以使用File下面的方法,比如Copy文件等操作

 

转载于:https://www.cnblogs.com/tommyhuzun/archive/2009/12/01/1614721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值