Невозможно запустить пакетный файл, расположенный на подключенном сетевом диске

Я не могу запустить пакетный файл, расположенный на подключенном сетевом диске, с помощью System.Diagnostics.Process в VB.Net. Я получил:

'<batchfilename>.bat' is not recognized as an internal or external command, operable program or batch file.
Press any key to continue...

Я получаю ту же ошибку, когда перехожу к папке (с помощью проводника), содержащей этот пакетный файл, и дважды щелкаю по нему. Я могу успешно запустить пакетный файл, изменив каталог на эту папку через командную строку. Я не могу понять, почему это происходит. Я думаю, проблема в том, что функция Start() процесса работает как двойной щелчок, а не просто запускает пакетный файл. Я разместил свой код ниже. Любая помощь по этому поводу будет высоко оценена.

Private WithEvents batchProcObj As New Process
Private Const SLEEP_AMOUNT As Integer = 100
Public Event Exited As EventHandler
Private eventHandled As Boolean

Public Sub startBatchProcess(ByVal batchProcFilePath As String, ByVal batchParams As String, ByVal domainName As String, ByVal loginName As String, ByVal passwd As String)
        ' Initialise process start info with batch process path and the parameters
        Dim startInfoObj As New ProcessStartInfo()
        Dim parentDir As New IO.DirectoryInfo(batchProcFilePath)

        ' Initialise event to false
        eventHandled = False

        ' Get the batch file name without the extension
        batchName = batchProcFilePath

        Try                
            ' Assign the batch process properties
            startInfoObj.FileName = batchProcFilePath
            startInfoObj.Arguments = batchParams
            startInfoObj.UseShellExecute = False
            startInfoObj.WindowStyle = ProcessWindowStyle.Normal
            startInfoObj.WorkingDirectory = "C:\Windows\System32\"
            startInfoObj.Domain = domainName
            startInfoObj.UserName = loginName
            startInfoObj.Password = appHandler.getSecureString(passwd)
            startInfoObj.LoadUserProfile = True
            batchProcObj.StartInfo = startInfoObj
            batchProcObj.EnableRaisingEvents = True

            ' Start the batch file
            batchProcObj.Start()

            ' Get the start time of the batch process
            procStartTime = batchProcObj.StartTime
            ' Insert audit log
            appHandler.writeAuditLog("RunBatchProcess", "START - Batch Process [" & batchName & "]")

        Catch ex As Exception
            appHandler.writeErrorLog("Start Batch Process: " & batchProcFilePath, ex)
        End Try

        ' Continue running the batch process till it exits
        Do While Not eventHandled
            elapsedTime += SLEEP_AMOUNT
            Thread.Sleep(SLEEP_AMOUNT)
        Loop

    End Sub

person Pramod Moudgalya    schedule 29.11.2011    source источник


Ответы (1)


Просто используйте FileIO.FileSystem и скопируйте его во временный файл. Затем используйте Backgroundworker для запуска.

person SL H4CK3R    schedule 25.12.2011