有没有办法为我的WCF服务设置app.config,以便输出到LocalApplicationData folder而无需硬编码?
%LOCALAPPDATA%
在XP中不起作用,我需要支持XP
我发现shell:Local AppData
有效,但我不知道如何将其放入app.config
我能找到的下一个最近的是%APPDATA%
,但我不认为这与LocalApplicationData不一样
最糟糕的情况是,我可以(但不愿意)使用代码来执行此操作(直接使用SpecialFolders),但我不确定如何在保持其余设置可配置的同时进行设置?
答案 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。