2010-11-10 42 views
0

我有一个桌面应用程序,在第一次执行时提示连接详细信息到数据库,然后我想保留它们以备将来使用(作为加密字符串),以便下次用户启动应用程序时, -用过的。现在,客户端运行一个我以前没有真正接触过的citrix环境,并且我想确保这个加密的数据库字符串以这样的方式保存,以便用户在任何地方登录时都可以使用它 - 我认为我所说的是,应用程序需要在他们的漫游配置文件中知道这个设置,但这是我以前不必担心的事情,所以我只是检查是否有任何我需要的陷阱意识到。将设置存储在可能部署在Citrix环境中的.Net Winforms应用程序中的最佳做法是什么?

正常情况下,我只是在.Net中使用My.Settings命名空间,但是会在这种环境中切断它吗?

我很感谢任何知道保存用户设置的“最佳做法”,以便漫游用户在从新位置登录时不会再被要求再次输入其设置。

以这种方式设置数据库连接的原因是有一个用户可以在(相同数据库,不同服务器)之间切换的测试和实时数据库。

将活动和测试连接字符串存储在app.config中并允许管理员在安装后手动更新它们,然后提供切换以从测试转到UI中?

我通常在asp.net网站上工作,所有的东西都在web.config中愉快地生活,所以这是我舒适区之外的一个步骤。我可以在书中看到很多选项,但是我想知道是否有人对哪种技术最适合他们有任何建议?

我使用VB.Net 3.5(Visual Studio 2010)。这是一个windows窗体项目,在解决方案中有一些.dll库,实际的数据库访问发生在这个项目中。

回答

1

如您所写,您需要确保您保存的设置最终位于配置文件的漫游部分。这可以是注册表配置单元HKEY_CURRENT_USER或解析为%USERPROFILE%\ AppData \ Roaming(在Vista和更高版本上,也适用于旧操作系统上特定于语言环境的漫游AppData文件夹)的文件夹%APPDATA%。

在.NET中,用户特定的设置可以存储在用户配置文件的漫游和本地部分。为了使设置漫游,“漫游”属性需要设置为true。看到这篇文章的解释,也为路径的设置实际上会保存:

http://www.codeproject.com/KB/vb/appsettings2005.aspx

+0

我要调查这个Helge,我没有发现“漫游”属性 - 可能是我正在寻找的rosetta石头:) – Mordy 2010-11-11 11:52:31

+0

漫游设置似乎在我的机器和用户的工作。config被写入漫游文件夹而不是Localdata文件夹,但是我无法在不同项目中的数据访问层中获取My.Settings值,因此显然无法使用My.Settings包装器。我设法得到的值出使用此的变体: – Mordy 2010-11-11 14:48:05

+0

(进口system.configuration) 昏暗配置作为System.Configuration.Configuration 配置= System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming) 昏暗部分As System.Configuration.ClientSettingsSection = CType(config.GetSection(“userSettings/AppName.My.MySettings”),ClientSettingsSection) Dim Value as string = section.Settings.Get(“ActiveDSN”)。Value.ValueXml.InnerText – Mordy 2010-11-11 14:48:32

0

如果您知道连接字符串事先可以将它们存储在App.config,并要求用户在开始时例如,应用程序通过ComboBox选择连接。

如果你不提前知道的连接串,我能想到的下列选项:
1-使用,你知道它的连接字符串或本地数据库,SqlServerCE .sdf文件的数据库,用于存储这些信息。
2-在.Net中使用用户设置,通过C#中的Properties.Settings.Default.NameofSetting访问。

+0

这将是我的首选诚实方式,但桌面应用会出现给很多客户,我担心他们之间不小心泄漏了连接细节,所以我宁愿他们现场配置它们以满足他们自己的要求。另外,我不想以纯文本的形式存储配置数据,我认为如果客户必须首先对数据进行加密,那么使用这种方式就太麻烦了。 – Mordy 2010-11-11 11:52:04

相关问题