如何在本地运行其他电脑上的bat文件

woshiyechao 2012-03-02 03:33:01
本地运行其他电脑上的bat文件

bat文件存放路径
192.168.1.2 administrator/123456
C:\bat\admin.bat

谁给提供下代码?
...全文
944 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mizuho_2006 2012-03-03
  • 打赏
  • 举报
回复
这也太不安全了吧。如果通过telnet协议远程连接其他主机在其他机器上运行倒没什么。
蔡袅 2012-03-03
  • 打赏
  • 举报
回复
 static void Main(string[] args)
{
ExecuteRemote("192.168.1.2", "administrator", "123456", "", "C:\bat\admin.bat");
}
/// <summary>
///调用远程执行程序命令的方法
/// </summary>
/// <param name="serverHostName">远程机名或者IP</param>
/// <param name="userName">用户名</param>
/// <param name="password">帐户密码</param>
/// <param name="strCommand">命令</param>
/// <param name="path">路径</param>
static void ExecuteRemote(string serverHostName, string userName, string password, string strCommand, string path)
{
//ConnectionOptions指定生成wmi连接所需的设置
ConnectionOptions connOption = new ConnectionOptions();
connOption.Username = serverHostName + "//" + userName;
connOption.Password = password;

//ManagementPath 包装了生成和分析wmi对象的路径
ManagementPath mngPath = new ManagementPath(@"\\" + serverHostName + @"\root\cimv2:Win32_Process");
ManagementScope scope = new ManagementScope(mngPath, connOption);
scope.Connect();

//ObjectGetOptions 类是指定用于获取管理对象的选项
ObjectGetOptions objOption = new ObjectGetOptions();
//ManagementClass 是表示公共信息模型 (CIM) 管理类,通过该类的成员,可以使用特定的 WMI 类路径访问 WMI 数据
ManagementClass classInstance = new ManagementClass(scope, mngPath, objOption);
ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
//设定命令行参数
inParams["CommandLine"] = path;
ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, null);
}

没测试,代码应该类似这样..
threenewbee 2012-03-03
  • 打赏
  • 举报
回复
你想在远程电脑上运行,还是在本地电脑上运行存储在远程电脑上的批处理。
蔡袅 2012-03-03
  • 打赏
  • 举报
回复
   c#中可以通过wmi在远程机上执行命令(wmi:windows management interface 可以通过一个公共的接口访问不同操作系统(windows系统)的构成单元,利用它可以高效的管理远程和本地的计算机。它也是w2k3,w2k8和xp的管理系统的控制核心),下面是完成这个工作的示范代码:

//////////////////////////////////////////////////////////////////////////////////////////////////

//ConnectionOptions指定生成wmi连接所需的设置

ConnectionOptions connOption = new ConnectionOptions();
connOption.Username = domain + @"\" + userName;
connOption.Password = password;

//ManagementPath 包装了生成和分析wmi对象的路径

ManagementPath mngPath = new ManagementPath(@"\\" + serverHostName + @"\root\cimv2:Win32_Process");
ManagementScope scope = new ManagementScope(mngPath, connOption);
scope.Connect();

//ObjectGetOptions 类是指定用于获取管理对象的选项

ObjectGetOptions objOption = new ObjectGetOptions();

//ManagementClass 是表示公共信息模型 (CIM) 管理类,通过该类的成员,可以使用特定的 WMI 类路径访问 WMI 数据
ManagementClass classInstance = new ManagementClass(scope, mngPath, objOption);

int ProcessId = 0;
object[] cmdline = { "cmd /c " + strCommand, path, null, ProcessId };

//调用执行命令的方法
classInstance.InvokeMethod("Create", cmdline);

其中domain是登陆远程机的域名,userName,password是登陆远程机的帐户密码。

serverHostName是要访问的远程机名或者IP。

strCommand是需要在远程机上面执行的命令。

//////////////////////////////////////////////////////////////////////////////////////////////////



c#中还可以通过使用 HTTP 协议传输消息的客户端信道,来实现远程调用,下面是示范代码:

//首先建立信道,并注册信道服务

HttpChannel c = new HttpChannel();
ChannelServices.RegisterChannel(c, false);

//然后调用可执行文件执行操作

object remoteObject = Activator.GetObject(Type.GetType(RemoteObject), remoteObjectURL);
RemoteObject marshalObj = (RemoteObject)remoteObject;
marshalObj.RunCommand(ExeFilePath);

//关闭信道

ChannelServices.UnregisterChannel(c);

public class RemoteObject:MarshalByRefObject
{
public string RunCommand(string cmd)
{
Process p=new Process();
p.StartInfo.FileName="cmd.exe";
p.StartInfo.UseShellExecute=false;
p.StartInfo.RedirectStandardInput=true;
p.StartInfo.RedirectStandardOutput=true;
p.StartInfo.RedirectStandardError=true;
p.StartInfo.CreateNoWindow=true;
p.Start();
p.StandardInput.WriteLine(cmd);
p.StandardInput.WriteLine("exit");
p.Close();

}
}
startstartsvip 2012-03-03
  • 打赏
  • 举报
回复
嘿嘿,帮你顶上去,看看CSDN 的 大牛,其实你该发到别的区,这不是一个 C# 的问题

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧