如何将配置输出设置为特殊文件夹(LocalApplicationData)?

时间:2013-01-07 20:45:57

标签: c# wcf configuration windows-xp special-folders

有没有办法为我的WCF服务设置app.config,以便输出到LocalApplicationData folder而无需硬编码?

%LOCALAPPDATA%在XP中不起作用,我需要支持XP

我发现shell:Local AppData有效,但我不知道如何将其放入app.config

我能找到的下一个最近的是%APPDATA%,但我不认为这与LocalApplicationData不一样

最糟糕的情况是,我可以(但不愿意)使用代码来执行此操作(直接使用SpecialFolders),但我不确定如何在保持其余设置可配置的同时进行设置?

2 个答案:

答案 0 :(得分:2)

您可以从Environment对象获取它。

string path;
path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

根据评论编辑:

现在我明白了。您可以创建自己的环境变量,以用作配置中路径的一部分。

CMD:

set mylocalapplicationdata="somewhere"

或C#:

string name = "mylocalapplicationdata";
string value = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
Environment.SetEnvironmentVariable(name, value);

在此之后,您可以像其他系统变量一样使用%mylocalapplicationdata%

您可以为一个会话(进程),用户或计算机设置变量(对于需要管理员权限的计算机)。

更多信息(MSDN): http://msdn.microsoft.com/en-us/library/z46c489x.aspx

或者你可以使用这样的字符串:

%USERPROFILE%\Local Settings\Application Data

但这仅适用于Windows XP。

答案 1 :(得分:1)

我认为只有使用内置环境变量才能获得所需信息。从Windows XP到Windows Vista / 7的信息不一致,所以我认为您最好的选择是在安装期间更新配置文件,以便确定操作系统并访问其他Windows API。