То, как я это сделал, я сохранил XML-файл, который был сериализован из объекта POCO с информацией о SQL-соединении, в изолированное хранилище. Поскольку нет никаких реальных ограничений на учетную запись пользователя, которая может читать и писать оттуда, вам не нужно беспокоиться о правах пользователя.
Затем я изменил события настроек, чтобы при считывании свойства строки подключения из файла настроек приложения я вместо этого десериализировал XML-файл в изолированном хранилище, строил строку подключения и затем помещал ее в свойство строки подключения настроек приложения. , Так как я делал это внутри самого класса настроек, я мог писать в него (но не сохранять обратно в файл).
Когда мое приложение запускается, если оно не может подключиться к серверу, я просто всплываю окно, запрашивающее информацию о сервере sql, и они вводят его, и оно сохраняет его в изолированном хранилище, никогда больше не запрашивая его (даже через обновления).
Если у вас есть клиентское приложение (WPF или WinForms), пользователи на других машинах не смогут его использовать, и, откровенно говоря, вы, вероятно, не найдете решения для этого, если только вы не изучите .Net Remoting или что-то в этом роде. природа. Однако, если у вас на том же компьютере в приложении WinForms несколько пользователей, вы можете использовать IsolatedStorage, и он будет работать для всех пользователей.
В классе настроек добавьте этот обработчик событий:
VB:
Private Sub MySettings_SettingsLoaded(ByVal sender As Object, ByVal e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded
Me.Item("MyAppConnectionString") = MyLibrary.BuildConnectionString()
End Sub
C #:
protected override void OnSettingsLoaded(object sender, System.Configuration.SettingsLoadedEventArgs e)
{
base.OnSettingsLoaded(sender, e);
this["MyAppConnectionString"] = MyLibrary.BuildConnectionString();
}