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");执行不了,
...全文
1520 9 打赏 收藏 举报
写回复
用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
  • 打赏
  • 举报
回复
高手在哪里啊在哪里
内容概要:本文介绍了COSO企业风险管理框架,阐述了企业风险管理的定义、目标、构成要素及其与内部控制的关系。文章指出,企业风险管理是一个由董事会、管理层及其他人员实施的,应用于战略制定并贯穿于企业之中的过程,旨在识别可能影响主体的潜在事项,管理风险以使其在该主体的风险容量之内,并为主体目标的实现提供合理保证。该框架强调了企业风险管理的八大构成要素:内部环境、目标设定、事项识别、风险评估、风险应对、控制活动、信息与沟通、监控。此外,文章还讨论了企业风险管理的局限性,如人为判断失误、成本与效益的权衡、管理层凌驾等。 适合人群:具备一定管理学基础知识,对风险管理有兴趣的学者、企业管理人员、内部审计师及外部审计师。 使用场景及目标:①帮助组织理解并应用企业风险管理框架,以提高组织的风险管理水平;②指导企业如何通过有效的风险管理来实现其战略、经营、报告和合规目标;③为企业提供一套标准化的风险管理语言,促进内外部沟通与合作。 阅读建议:读者应结合实际案例,深入理解每个构成要素的具体应用,同时关注企业风险管理的局限性,以全面把握企业风险管理的本质。此外,建议定期回顾和更新风险管理策略,以适应不断变化的内外部环境。

111,128

社区成员

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

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

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