0

キオスクの目的でシェルとしてWindowsエクスプローラーを置き換えるアプリケーションを作成しました。アプリケーションは2つの構成ファイルを維持します。1つはアプリケーション目的で使用および維持されるもの(app.config)で、もう1つは別のディレクトリに保存されるため、GUIがリポジトリから更新しようとしたときに上書きされません。

アプリケーションを通常の環境で実行すると、完全に機能します。ただし、起動時やユーザーの切り替え時に使用すると、アプリケーションが他のディレクトリの情報を読み込めないように見えます。

マネージャークラスから

Private Shared rootCP As String
Friend Shared Sub loadConfig()

    Dim dir As New IO.DirectoryInfo(Environment.CurrentDirectory)

    Try
        Dim objReader As New System.IO.StreamReader(dir.Parent.FullName & "\local.config")
        rootCP = objReader.ReadToEnd
        objReader.Close()
    Catch Ex As Exception
        'DEBUG: console.write(ex.message)
    End Try

    dir = Nothing

End Sub

MainForm_Loadサブから

Manager.loadConfig()

別の関数は後でrootCP文字列からデータを取得しようとしますが、システムの起動後にアプリケーションが起動された場合にのみデータにアクセスできます。何か考えはありますか(VB.NETまたはC#で問題ありません)?

4

1 に答える 1

2

これらの1つはあなたのために働くかもしれません。私はほとんどいつもを使用しますAssembly.GetEntryAssembly().Location。アセンブリでは使用しないでくださいCodeBase。予期しないものになる可能性があります。

Assembly.GetEntryAssembly().Location
AppDomain.CurrentDomain.BaseDirectory

Windowsアプリの場合:

Application.ExecutablePath

通常の方法が機能していないので、これらのどれが確実に機能するかを私が言うのは難しいです。また、常にPath.Combine(...)2つのパスをまとめるために使用します。

于 2012-04-20T05:13:31.330 に答える