1. ホーム
  2. c#

[解決済み] C# が %AppData% のパスを取得する。

2022-03-21 16:25:04

質問

C# 2008 SP1

私は以下のコードを使っています。

dt.ReadXml("%AppData%\\DateLinks.xml");

しかし、私のアプリケーションが実行されている場所を指す例外が発生しています。

パスの一部が見つかりませんでした 'D:\ProjectsSubVersionProjectsCatDialer

と思ったのですが %AppData% は、相対パスを見つける必要があります。私が Start|Run|%AppData% windows explorerは、そのディレクトリに私を連れて行く。

クライアントマシンごとにユーザーが異なるため、フルパスを入力することができません。

どうすればいいですか?

を取得するために AppData ディレクトリを使用するとよいでしょう。 GetFolderPath メソッドを使用します。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

(を追加する必要があります。 using System が存在しない場合)。

%AppData% は環境変数であり、.NETのどこでも自動的に展開されませんが、明示的に Environment.ExpandEnvironmentVariable メソッドで行うことができます。やはり強くお勧めしたいのは GetFolderPath しかし、Johannes Rösselがコメントで指摘しているように、その理由は %AppData% は、特定の状況では設定されないことがあります。

最後に、例のようにパスを作成すること。

var fileName = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData), "DateLinks.xml");