本地运行其他电脑上的bat文件bat文件存放路径
192.168.1.2 administrator/123456
C:\bat\admin.bat谁给提供下代码?
192.168.1.2 administrator/123456
C:\bat\admin.bat谁给提供下代码?
解决方案 »
- 使用tick函数,产生操作延时
- C# DATATIMEPICKER样式更改
- 求助:如何将“4-3-16-23”这种字符串拆开保存到一个字符串数组中?
- 熟练使用webService的进来啊!分不是问题(问题解决好就可以了)
- 如何进行Decamil型数据计算(语法)?
- 请问如何更新listbox里的一条记录
- c#.net 中打开excel问题
- 请教一个困扰了我很久的问题:WinForm程序被执行之后,……………
- 在c#中怎么把类型转化成为uniqueidentifier类型,uniqueidentifier可以做为输出参数吗?希望大家可以帮我解答哈!!谢谢啦
- 急急急!那儿出错了??
- 登陆窗口居中
- C#登录数据匹配?
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(); }
}
{
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);
}
没测试,代码应该类似这样..