【问题标题】:How to set config output to special folder (LocalApplicationData)?如何将配置输出设置到特殊文件夹(LocalApplicationData)?
【发布时间】:2012-12-21 15:25:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我将保持打开状态,以防有人提出更好的方法,但我将使用 WIX 适当地更新配置。
  • 其实我意识到这对于每个用户进程来说会有所不同,所以上面安装时设置的方法是行不通的。
  • 我不得不使用 log4net,它可以更好地控制日志记录

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


【解决方案1】:

您可以从 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。

【讨论】:

  • 我需要 .config 文件中的这个
  • 我已经删除了我的反对票,但这不是我的选择。
【解决方案2】:

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

【讨论】:

  • 接受这一点作为我所有的研究都表明我想要什么是不可能的。所以,我不得不去 log4net,它允许创建从代码中读取的特殊变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2016-08-28
  • 2011-08-29
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多