我這樣做的方式是我保存了一個XML文件,該文件是從具有SQL連接信息的POCO對象序列化到獨立存儲中的。由於對可從中讀取和寫入的用戶帳戶沒有真正的限制,因此您不必擔心用戶權限。
然後我修改了設置事件,以便當從應用程序設置文件中讀取連接字符串屬性時,我反序列化了隔離存儲器中的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();
}
你的問題的答案似乎是你應該使用用戶設置。但是,既然你已經提到過這些,我不確定你的問題是什麼。你想讓所有用戶共享相同的連接字符串,但是能夠自定義它嗎? – 2009-07-16 13:50:31
是的。我希望所有用戶使用相同的連接字符串並對其進行自定義。 – superartsy 2009-07-16 14:03:40
從你的其他評論之一,你似乎希望能夠管理你的應用程序。如果您處於活動目錄中,則可以使用組策略進行應用程序管理。如果數據庫已移動,則更新您的策略,並自動更新所有用戶。但是,所需的努力可能比您想投資的要多。 – 2009-07-16 14:32:10