C# 怎样执行vbs文件

horicon 2010-06-29 05:30:27
如题,vbs文件功能是改远程Linux密码
代码如下:
set sh=WScript.CreateObject("WScript.Shell")
sh.SendKeys "telnet 192.168.139.254 -l root"
sh.SendKeys "{ENTER}"
WScript.Sleep 2000
sh.SendKeys "root{ENTER}"
WScript.Sleep 2000
sh.SendKeys "sed -e 's/192.168.139.254/192.168.139.254/g' /etc/sysconfig/network-scripts/ifcfg-eth0>> .laji{ENTER}"
WScript.Sleep 2000
sh.SendKeys "mv -f .laji /etc/sysconfig/network-scripts/ifcfg-eth0 {ENTER}"


我用 Process.Start("wscript", @"C:\vbs.vbs");执行不了,
...全文
1376 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
云海玉弓缘 2010-06-30
  • 打赏
  • 举报
回复
方法1:直接调用

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "wscript";
proc.StartInfo.Arguments = " hello.js";
proc.StartInfo.UseShellExecute = false;
proc.Start();


方法2:
使用MS的Windows Script Control

string scr = "function hello(){var WshShell = new ActiveXObject(\"WScript.Shell\");"
+ "var code = \"WScript hello.js\";"
+ "WshShell.Exec(code);}";
MSScriptControl.ScriptControl sc = new ScriptControl();
sc.Language = "JScript";
sc.AllowUI = true;
sc.AddCode(scr);
object[] parameters = new Object[0];
sc.Run("hello", ref parameters);
horicon 2010-06-30
  • 打赏
  • 举报
回复
这个问题解决了
因为vbs文件里是SendKeys,把键盘上的键发送到一个地方,现在没有地方来接收这些键值,所以在一个bat文件中需要先打开一个cmd程序,以接收这些发送来的SendKeys。
.bat 文件改为:
start cmd
start vbs.vbs
然后再调用这个bat文件就可以了

Process.Start("wscript", @"C:\vbs.vbs");这样执行后,不会有结果,但会把vbs.vbs里的内容一个字符一个字符写到VS里光标当前位置,这个原因也是SendKeys发送的东西没有东西来接收,所以只能写到光标当前位置。
poloyzhang 2010-06-30
  • 打赏
  • 举报
回复
这个倒是要关注一下,学习.............................
dylike 2010-06-30
  • 打赏
  • 举报
回复
System.Text.StringBuilder Sb = new System.Text.StringBuilder();

{
Sb.AppendLine("telnet 192.168.139.254 -l root");
Sb.AppendLine("root");
Sb.AppendLine("sed -e 's/192.168.139.254/192.168.139.254/g' /etc/sysconfig/network-scripts/ifcfg-eth0>> .laji");
Sb.AppendLine("mv -f .laji /etc/sysconfig/network-scripts/ifcfg-eth0");
//.AppendLine("@pause")
Sb.AppendLine("exit");
}
IO.File.WriteAllText("c:\\windows\\temp\\test.bat", Sb.ToString);
Process.Start("c:\\windows\\temp\\test.bat");
threenewbee 2010-06-29
  • 打赏
  • 举报
回复
ShellExecute API。

不过直接telnet就可以了,不必绕这个弯子,用sendkeys,好麻烦,也不可靠。
iyoubook 2010-06-29
  • 打赏
  • 举报
回复
Process.Start(@"C:\vbs.vbs");就可以执行了。
beingstudio 2010-06-29
  • 打赏
  • 举报
回复
这个问题我也碰到了 我用Process.Start可以执行 但无法截获stdout和stderr
horicon 2010-06-29
  • 打赏
  • 举报
回复
吃完饭在线等
horicon 2010-06-29
  • 打赏
  • 举报
回复
高手在哪里啊在哪里

111,098

社区成员

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

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

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