【问题标题】:vb.net 2008 - windows service won't execute vbs in processvb.net 2008 - Windows 服务不会在进程中执行 vbs
【发布时间】:2012-01-19 23:59:37
【问题描述】:

我已经尝试了一个星期来让它工作,但没有运气。我已经完全剥离了我的 vb.net 2008 windows 服务,只创建一个 vbs 文件并使用进程启动它。有人可以帮忙吗?我要死在这里了。 vbs 文件创建并有效。我可以手动执行它,windows服务就是不会运行它!!我在 Windows 7 机器上,该进程被编译并安装为 32 位进程。它也作为本地系统安装。

在进程尝试执行后,我创建了一个文本文件并且它成功了。所以,我知道服务没有崩溃。

有什么想法吗?

干杯, J

Dim TextFile As New StreamWriter("C:\LRQuadrant\" & "john" & ".vbs")

'Create the VBS file - won't work in .Net
TextFile.WriteLine("Set WshShell = WScript.CreateObject(""WScript.Shell"")")
TextFile.WriteLine("ScenFile = """ & "john" & """")
TextFile.WriteLine("Set LRE = WScript.CreateObject (""WLRun.LrEngine"")")
TextFile.WriteLine("WScript.Sleep 5000")
TextFile.WriteLine("if LRE.Scenario.IsOpened then")
TextFile.WriteLine("While LRE.Scenario.IsActive")
TextFile.WriteLine("Wscript.Sleep 10000")
TextFile.WriteLine("Wend")
TextFile.WriteLine("end if")
TextFile.WriteLine("LRE.Scenario.Open ScenFile, SAVE_CURRENT")
TextFile.WriteLine("DateString = Year(Date) &  
  Right(""0"" & Month(Date), 2) &  
  Right(""0"" & Day(Date), 2) &""_""& 
  Right(""0"" & Hour(Now),2) & Right(""0"" & 
  Minute(Now),2)")
TextFile.WriteLine("ResultDir =  ""C:\LRQuadrant\""")
TextFile.WriteLine("LRE.Scenario.ResultDir = ResultDir")
TextFile.WriteLine("If LRE.Scenario.Start = 0 Then")
TextFile.WriteLine("While LRE.Scenario.IsActive")
TextFile.WriteLine("Wscript.Sleep 10000")
TextFile.WriteLine("Wend")
TextFile.WriteLine("end if")
TextFile.WriteLine("if Not LRE.Scenario.IsResultsCollated then")
TextFile.WriteLine("LRE.Scenario.CollateResults")
TextFile.WriteLine("end if")
TextFile.WriteLine("while not LRE.Scenario.IsResultsCollated")
TextFile.WriteLine("Wscript.Sleep 10000")
TextFile.WriteLine("wend")
TextFile.WriteLine("LRE.CloseController()")
TextFile.Close()

Threading.Thread.Sleep(1000)

Process.Start("C:\LRQuadrant\john.vbs")

Dim TextFile2 As New StreamWriter("C:\LRQuadrant\bugger.txt")
TextFile2.WriteLine("hello")
TextFile2.Close()

【问题讨论】:

    标签: vb.net service process vbscript


    【解决方案1】:

    您需要WaitForExit()
    否则,您将在进程完成之前尝试读取文件。

    【讨论】:

      【解决方案2】:

      VBS 文件不是可执行文件。它们是解释脚本。因此,您需要调用 cscript.exe 并将您的 VBS 文件作为参数传递:

      cscript.exe //B //Nologo C:\LRQuadrant\john.vbs
      

      或者可能是完整路径:

      C:\Windows\system32\cscript.exe //B //Nologo C:\LRQuadrant\john.vbs
      

      如果效果不好,你可以试试这个:

      %comspec% /C cscript.exe //B //Nologo C:\LRQuadrant\john.vbs
      

      祝你好运。

      【讨论】:

      • 系统文件夹应始终位于路径中。您绝对应该在此处(或任何地方)硬编码值。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多