.NET服务的user.config位于何处?

时间:2014-03-24 06:49:37

标签: c# .net service settings

我正在使用installutil.exe. (.NET 4.0)安装基于.NET的Windows服务。此服务包含ServiceName.exe.config file。此文件与.exe文件本身存储在同一目录中。但似乎该文件只保留默认值(如“标准”.NET应用程序)。在服务运行时更改设置不会在安装路径中的ServiceName.exe.config中生效(作为http://stackoverflow.com/questions/17154936/net-service-config-file-locationother的答案)类似的问题建议)。 查看C:\Windows\Users\"Username"\AppData\Local\也不会带来成功。

更改设置正在运行,我通过将一些设置值写入日志文件来检查。唯一的问题是,存储值的文件和位置在哪个位置?

编辑:

配置文件看起来像这样。

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="MeLoQDASExportService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
        </sectionGroup>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="MeLoQDASExportService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
        </sectionGroup>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    </startup>
    <applicationSettings>
        ...
    </applicationSettings>
    <userSettings>
        <MeLoQDASExportService.Properties.Settings>
            <setting name="logName" serializeAs="String">
                <value>ExportLog.txt</value>
            </setting>
            <setting name="lastExport" serializeAs="String">
                <value>1990-01-01</value>
            </setting>
        </MeLoQDASExportService.Properties.Settings>
    </userSettings>
</configuration> 

这是已安装服务的文件夹中的文件。它仍包含初始值,但是从服务到文本文件的值的输出显示实际值(例如“lastExport”的当前日期)

2 个答案:

答案 0 :(得分:0)

尝试System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel级别) http://msdn2.microsoft.com/en-us/library/ms134265.aspx

传入ConfigurationUserLevel.PerUserRoamingAndLocal(或者尝试PerUserRoaming)。然后在返回的Configuration对象上,获取FilePath属性。

答案 1 :(得分:0)

我刚刚发现使用Process Monitor

  

c:\ Windows \ SysWOW64 \ config \ systemprofile \ AppData \