ApplicationSettings is badly named as it deals with both Application-wide and per-user settings.
The code snippet below is the *.exe.config file from an application on my machine.
I have highlighted a section in red.
Note that the node is 'usersettings' and this part will be stored for each user.
Where it is stored depends on how the network is set up. It uses
Local Settings\Application Data on my standalone. This is governed by the
Environment.SpecialFolder enumeration, the first three members are of interest here, and as I say how your network is set up.
I created this section in the *.config file with the following steps
1) Select Form in designer (could have selected a Button, Panel or whatever)
2) Under
(ApplicationSettings), in the Property Grid, click the ellipsis on
(PropertyBinding)
3) Select the property required from the Dialog that appears and click the drop-down, then click the
(New...) link.
4) In the Dialog that appears give the setting a name and you can choose whether it is scoped for user or application.
5) OK your way out.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TelephoneNumberWordGenerator.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
[B][COLOR="Red"] <userSettings>
<TelephoneNumberWordGenerator.My.MySettings>
<setting name="MainformBorder" serializeAs="String">
<value>Sizable</value>
</setting>
</TelephoneNumberWordGenerator.My.MySettings>
</userSettings>[/COLOR][/B]
</configuration>
Do a small test for yourself. Either with an existing app or create a very simple one specially for the test. Create one or two user scoped settings (say Form.Size and Form.Location). Then have two users run the app, one user uses left and tall, the other right and wide. Close the app and restart it. They should both get what they set before closing.
So the solution could be to do as above for applicable settings and use your flat file methodology for whatever doesn't fit. However bear in mind that you can use the My.Settings for those parts too, where you can also elect for user or application scoping.
Hope this helps.