3

我希望能够做这样的事情:

IO.Directory.Exists("%USERPROFILE%")

原因是我想指定我的应用程序将使用的目录之一,作为配置文件中的纯文本。在某些情况下,我希望它嵌套在用户配置文件下,在这种情况下,配置文件将显示如下内容:

...
LocalDbDirectory = %USERPROFILE%\Application Data\My Toolkit\
...

或者我可能希望它位于网络位置,在这种情况下,它会显示为:

...
LocalDbDirectory = N:\Common\My Toolkit Databases\
...

所以我需要能够使用 IO.Directory.Exists(...) 或等效方法来解释速记符号。

有任何想法吗?

4

2 回答 2

5

您需要运行它们Environment.ExpandEnvironmentVariables(path)路径在哪里(对于不包含格式化标记@"%USERPROFILE%\Application Data\My Toolkit\"的路径,这样做没有害处)%%

于 2011-09-13T09:34:42.580 回答
3

如果速记是有效的环境变量,您可以解析它们的值:

    static void Main(string[] args)
    {
        string val = Environment.ExpandEnvironmentVariables("%USERPROFILE%");
        Console.WriteLine(val);
        Console.Read();
    }

从 .NET 4 开始,特殊文件夹支持包括用户配置文件:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
于 2011-09-13T09:35:22.860 回答