EXEファイルの実行フォルダが必要になることはよくあります。 フォルダを取得して、そこからの相対フォルダ参照で、データフォルダなどを作成・参照を行ったりしますので、 その方法について示します。 
まず最初は通常のWindowsフォームを持っているEXEファイルに付いてです。
WindowsフォームでのEXEファイル取得
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim strPath As String = ""
    'System.Windows.Forms.Application のSharedプロパティ「ExecutablePath」を参照
    ' アプリケーションを開始した実行可能ファイルのパスを、ファイル名を含めて取得します。
    strPath = System.Windows.Forms.Application.ExecutablePath
    Console.WriteLine("ExecutablePathdでのExeフルパス:[{0}]", strPath)
    '因みに、System.Windows.Forms.Application のSharedプロパティ「StartupPath」を参照
    ' アプリケーションを開始した実行可能ファイルのファイル名を含まないパス取得します。
    strPath = System.Windows.Forms.Application.StartupPath
    Console.WriteLine("StartupPathでのExeフルパス:[{0}]", strPath)
End Sub
実行結果は以下の様になります。
ExecutablePathdでのExeフルパス:[C:¥TestSrv¥BlogTest¥BlogTest¥bin¥Debug¥BlogTest.EXE] StartupPathでのExeフルパス:[C:¥TestSrv¥BlogTest¥BlogTest¥bin¥Debug]
コンソールアプリの場合にはこれは使えないので、以下の様に自分自身のアセンブリを取得し、そのLocationプロパティ を取得することでEXEのフルパスが取得できます。 
GetExecutingAssembly().Location でのEXEファイル取得
Module MdlMainPath
    'Main関数
    Sub Main()
        Dim strPath As String = ""
        'GetExecutingAssembly().Locationでの実行ファイルのパスを取得する
        strPath = System.Reflection.Assembly.GetExecutingAssembly().Location
        Console.WriteLine("GetExecutingAssembly().LocationでのExeフルパス:[{0}]", strPath)
        'パスから実行フォルダのみを取り出す
        strPath = System.IO.Path.GetDirectoryName(strPath)
        Console.WriteLine("GetExecutingAssembly().LocationでのExeフォルダ:[{0}]", strPath)
    End Sub
End Module
実行結果は以下の様になります。
GetExecutingAssembly().LocationでのExeフルパス:[C:¥TestSrv¥BlogTest¥BlogTest¥bin¥Debug¥BlogTest.exe] GetExecutingAssembly().LocationでのExeフォルダ:[C:¥TestSrv¥BlogTest¥BlogTest¥bin¥Debug]
関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
PR
 
  
コメント