Hola
No es lo mismo el directorio de trabajo actual (
WirkingDirectory), que el directorio donde se encuentra el ensamblado, ya que el primero no es estático y se puede modificar.
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. EDITO: Lo que dijo el compañero El Benjo es lo correcto.
Para obtener el directorio de inciio de la aplicación puedes utilizar este método:
Application.StartupPath
Y para averiguar el directorio de trabajo actual...bueno, esto es complétamente innecesario a menos que modifiques intencionadamente el directorio de trabajo en algun lugar del código y que por ese motivo debas controlar los cambios de directorio.
...Por ejemplo:
Dim Archivo As String = "Archivo.pdf"
...al momento que vayas a usar la variable Archivo para ejecutarlo, cargarlo, pasarlo como parámetro a un método, o lo que estés haciendo, ya se toma en cuenta el directorio de trabajo actual, porque ese es el directorio actual.
Es decir, lo de arriba, es exáctamente lo mismo que hacer esto:
Dim Archivo As String = IO.Path.Combine(IO.Directory.GetCurrentDirectory, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(Application.StartupPath, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(My.Application.Info.DirectoryPath, "Archivo.pdf")
Dim Archivo As String = IO.Path.Combine(CurDir(), "Archivo.pdf")
Dim Archivo As String = ".\Archivo.pdf"
Dim DirectorioActual As String = "" ' Nada
Así que se puede decir que no necesitas especificar el directorio de trabajo.
Saludos!