Vb.net 如何保存输入值?

Vb.net 如何保存输入值?,vb.net,Vb.net,使用VB.Net 数据库窗体 Server Name, Username, Password - textbox SQL Authentication, windows Authentication - checkbox 我有数据库表单,第一次运行软件时,我必须给出服务器名称、窗口或SQL身份验证模式、用户名和密码。下次运行该软件时,给定的数据(如服务器名称、用户名、密码、窗口或sql身份验证)应显示在表单中 在使用VB6之前,我使用ini文件获取用户名、密码和服务器名 vb6代码 Dim F

使用VB.Net

数据库窗体

Server Name, Username, Password - textbox
SQL Authentication, windows Authentication - checkbox
我有数据库表单,第一次运行软件时,我必须给出服务器名称、窗口或SQL身份验证模式、用户名和密码。下次运行该软件时,给定的数据(如服务器名称、用户名、密码、窗口或sql身份验证)应显示在表单中

在使用VB6之前,我使用ini文件获取用户名、密码和服务器名

vb6代码

Dim File As String, OFLen As Double, str As String
File = App.Path & "\SQLServer.ini"
OFLen = FileLen(File)
SName = ReadIni(File, "Server", "ServerName")
UName = ReadIni(File, "UserName", "UName")
PWord = ReadIni(File, "Password", "PWord")

Dim ConnectionString As String
Set DLTConn = New ADODB.Connection
ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security Info=False;Initial Catalog=database1;Data Source=" & SName & ""
DLTConn.Open ConnectionString
vb.net中有任何选项可用于保存数据,或者我必须在vb.net中使用相同的格式(ini文件)


需要vb.net代码帮助。

如果在“解决方案资源管理器”中右键单击项目并选择“属性”,则在“属性”页面上将出现一个“设置”选项卡,可在其中定义应用程序的设置

这些设置将存储在应用程序可执行文件附近的XML文件中。(如果是用户设置,则在C:\Users\username…目录中

如果将连接字符串设置命名为
DbConnectionString
,则可以通过如下代码访问该设置:

 My.Settings.DbConnectionString

但是,如果您需要存储用户名和密码,我建议您将设置存储在Windows注册表中,并使用
System.Security.Cryptography.ProtectedData
类对其进行加密。(不建议存储未加密的密码)。

这些说明假定为VB2008,但我认为2010类似

正如@treaschf所说,在解决方案资源管理器中右键单击您的项目并选择属性。如果弹出一个标题为“解决方案”…“属性页”的窗口,则您单击的是解决方案而不是项目。在属性窗口中单击设置。在名称列中输入“用户名”,将类型保留为字符串,将作用域保留为用户,将值保留为空(除非您希望输入默认值)。对要存储的每个属性重复此操作。这些步骤会自动创建可以使用My.Settings访问的变量

因此,在您的代码背后,您可以执行以下操作:

My.Settings.Username = "bob"
以及:

我相信设置会在退出时自动保存,但我建议在更新后打一个明确的电话以防万一

My.Settings.Save()
因此,这将与您以前使用的INI文件的功能大致相同。但是就像@treaschf所说的,在保存到磁盘时,您应该真正加密密码。下面是这里找到的例程的修改版本。我删除了System.Security.SecureString,因为它同样会使生活更加复杂。将熵的值更改为您可以调用Encrypt(string)对文本进行加密,然后使用Decrypt(string)对其进行解密。这使用了DPAPI,因此您不必担心会弄乱注册表、权限和其他一切

Private Shared entropy As Byte() = System.Text.Encoding.Unicode.GetBytes("Enter some text here for entropy")
Public Shared Function EncryptString(ByVal text As String) As String
    Dim data = System.Security.Cryptography.ProtectedData.Protect(System.Text.Encoding.Unicode.GetBytes(text), _
                                                                     entropy, _
                                                                     System.Security.Cryptography.DataProtectionScope.CurrentUser)
    Return System.Convert.ToBase64String(data)
End Function
Public Shared Function DecryptString(ByVal encryptedData As String) As String
    Dim data As Byte() = System.Security.Cryptography.ProtectedData.Unprotect(System.Convert.FromBase64String(encryptedData), _
                                                                                  entropy, _
                                                                                  System.Security.Cryptography.DataProtectionScope.CurrentUser)
    Return System.Text.Encoding.Unicode.GetString(data)
End Function
然后把它们放在一起:

        My.Settings.Username = EncryptString("bob")

    Dim username As String
    If Not String.IsNullOrEmpty(My.Settings.Username) Then
        Try
            username = DecryptString(My.Settings.Username)
        Catch ex As Exception
            'There was a problem decrypting the username
        End Try
    End If

    Trace.WriteLine(username)

我是vb.net新手,你能举一个例子吗?你可以使用Microsoft.Win32.registry类访问注册表。我相信你可以在MSDN库中找到一些使用它的例子。(我不使用vb编程,我只知道一些.net Framework类。)应该提到的是,你需要添加对System.Security的引用
        My.Settings.Username = EncryptString("bob")

    Dim username As String
    If Not String.IsNullOrEmpty(My.Settings.Username) Then
        Try
            username = DecryptString(My.Settings.Username)
        Catch ex As Exception
            'There was a problem decrypting the username
        End Try
    End If

    Trace.WriteLine(username)