2

有没有办法为我的 WCF 服务设置我的 app.config,以便它输出到LocalApplicationData 文件夹而无需硬编码任何东西?

%LOCALAPPDATA%XP下不行,需要支持XP

我发现这shell:Local AppData可行,但我不确定如何将其放入 app.config

我能找到的下一个最接近的是%APPDATA%,但我不相信这与 LocalApplicationData 不同

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

4

2 回答 2

2

您可以从 Environment 对象中获取它。

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

根据评论编辑:

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

命令:

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。

于 2013-01-07T21:16:45.563 回答
1

我认为没有办法仅使用内置环境变量来获取您想要的信息。从 Windows XP 到 Windows Vista/7 的信息不一致,所以我认为您最好的选择是在安装期间更新您的配置文件,您可以在其中确定操作系统并访问其他 Windows API。

于 2013-01-08T14:22:03.207 回答