读书人

怎么在本地运行其他电脑下的bat文件

发布时间: 2012-10-29 10:03:53 作者: rapoo

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

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

谁给提供下代码?

[解决办法]
嘿嘿,帮你顶上去,看看CSDN 的 大牛,其实你该发到别的区,这不是一个 C# 的问题

[解决办法]

C# code
   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();                }            }
[解决办法]
C# code
 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);        } 

读书人网 >C#

热点推荐