vb.net 2008 - служба Windows не будет выполнять VBS в процессе - PullRequest
0 голосов
/ 20 января 2012

Я уже неделю пытаюсь заставить это работать, но не повезло. Я полностью удалил свою службу Windows vb.net 2008, чтобы просто создать файл VBS и запустить его с помощью процесса. Может кто-нибудь, пожалуйста, помогите? Я умираю здесь. Файл VBS создает и является действительным. Я могу выполнить его вручную, служба Windows просто не запустит его !! Я на машине с Windows 7, и процесс скомпилирован и установлен как 32-битный процесс. Он также устанавливается как локальная система.

После того, как процесс попытается выполнить, я создал текстовый файл, и он сделал это успешно. Итак, я знаю, что сервис не выходит из строя.

Есть идеи?

Ура, J * +1007 *

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()

Ответы [ 2 ]

1 голос
/ 20 января 2012

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

Удачи.

1 голос
/ 20 января 2012

Вам нужно WaitForExit().
В противном случае вы попытаетесь прочитать файл до завершения процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...