0

特別なフォルダー パスを完全なファイル名に変換する (および元に戻す) 方法はありますか、それとも自分でコーディングする必要がありますか (難しいことはわかりませんが、存在する場合は意味がありません)。

たとえば、ユーザーが変更できるアプリケーションのテンプレートのファイル名を保存したい場合、LocalApplicationData フォルダーに存在します。

保存したいのは、次の形式のファイルの場所です。

%LOCALAPPDATA%\MyApp\Templates\Report Template.xls

このアプリケーション ファイルを多くのユーザーが使用できるように、各ユーザーがファイルを開いたときに、自分のローカル アプリ ディレクトリからレポート テンプレートを取得します。

私は書くことができます

replace("%LOCALAPPDATA%", _
    System.Environment.GetFolderPath(
         System.Environment.SpecialFolder.LocalApplicationData))

and vice versa

ファイルの場所を保存するときに、可能性のあるすべての特別なフォルダーを通過するのではなく、これを行うための System.IO (または同様の) 呼び出しがありますか?

4

2 に答える 2

4

見てください: Environment.ExpandEnvironmentVariables

いくつか見回した後、それを元に戻すための組み込みの方法はないと思います。

ただし、これを行うことができます:

static void Main(string[] args)
{
    var values = Enum.GetValues(typeof(Environment.SpecialFolder));

    foreach (Environment.SpecialFolder value in values)
        Console.WriteLine(value + " : " + Environment.GetFolderPath(value));

    Console.ReadKey();
}
于 2008-11-07T10:12:37.847 に答える
0

「特別なフォルダー」を識別する通常の Windows の方法は、それらのCSIDLによるものです。Environment.SpecialFolder は、それを包む小さなラッパーです。ご指摘のとおり、chakrit の投稿へのコメントで、ほとんどの CSIDL には対応する環境変数がありません。これが、実行するいくつかの CSIDL の環境変数を見つける機能がない理由である可能性があります。

于 2008-11-07T10:43:45.740 に答える