2016-08-15 1 views
0

Я пытаюсь запустить относительный путь назначения из приложения VB.NET. Я позаботился использовать обратную косую черту (а не косую черту), а также запустить процесс с рабочим каталогом, установленным на правильный путь источника; все еще получая ошибку The system cannot find the file specified при попытке запустить ее.Запустить относительный путь в Windows?

К примеру, у меня есть (псевдо-код):

txtSource.text path = "C:\Windows\System32"

txtResult.text path = "..\notepad.exe"

Вот Суб до сих пор:

Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click 

    Try 

     ' Create the process object 
     Dim pRun As New Process() 

     ' Set it to run from the Source folder (Working Directory) 
     With pRun.StartInfo 
      .UseShellExecute = False 
      .WorkingDirectory = IO.Path.GetDirectoryName(txtSource.Text.Trim) 
      .FileName = txtResult.Text.Trim 
     End With 

     pRun.Start() 

     ' Wait for it to finish 
     pRun.WaitForExit() 

    Catch ex As Exception 

     Debug.Print(ex.Message) 

    End Try 

End Sub 
+0

Две точки ('..') означают один уровень каталога выше, чем текущий. Одна точка ('.') означает текущий каталог. – TnTinMn

+0

В этом примере C: \ Windows \ notepad.exe - это один уровень каталога выше C: \ Windows \ System32. –

ответ

0

IO.Path.GetDirectoryName("C:\Windows\System32") возвращает «C : \ Windows "; каталог, содержащий «C: \ Windows \ System32».

StartInfo.Filename = "..\notepad.exe" рассказывает о процессе поиска notepad.exe в «C: \».

Также для этого вам необходимо установить StartInfo.UseShellExecute = True; см.: ProcessStartInfo Class для описания.

With pRun.StartInfo 
    .UseShellExecute = True 
    .WorkingDirectory = txtSource.Text.Trim 
    .FileName = txtResult.Text.Trim 
End With 
+0

Aha! Для примера я первоначально установил txtSource полный путь, включая фактическое имя файла, но сократил его для примера без двойной проверки сначала lol, но установка '.UseShellExecute' в' True' была ключом. Это всегда те мелочи, которые вам не хватает, когда вы проводили 12 часов в день кодирование, в течение нескольких дней, lol. Благодаря! –