使用VB.Net做一个配置web.config功能的WinForm

web

界面很简单,五个控件txtServerName、cboDatabase、txtUserName、txtPassword、cbWindowsAuthentication

下面是VB.Net后台代码:

Imports System
Imports System.Diagnostics
Imports System.Configuration
Imports System.Xml
Imports System.Text
Imports System.Reflection

Public Class frmMain
??? Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

??? Public Sub New()
??????? MyBase.New()

??????? '该调用是 Windows 窗体设计器所必需的。
??????? InitializeComponent()

??????? '在 InitializeComponent() 调用之后添加任何初始化

??? End Sub

??? '窗体重写 dispose 以清理组件列表。
??? Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
??????? If disposing Then
??????????? If Not (components Is Nothing) Then
??????????????? components.Dispose()
??????????? End If
??????? End If
??????? MyBase.Dispose(disposing)
??? End Sub

??? 'Windows 窗体设计器所必需的
??? Private components As System.ComponentModel.IContainer

??? '注意: 以下过程是 Windows 窗体设计器所必需的
??? '可以使用 Windows 窗体设计器修改此过程。
??? '不要使用代码编辑器修改它。
??? Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
??? Friend WithEvents txtServerName As System.Windows.Forms.TextBox
??? Friend WithEvents cbWindowsAuthentication As System.Windows.Forms.CheckBox
??? Friend WithEvents grpLogin As System.Windows.Forms.GroupBox
??? Friend WithEvents lblPassword As System.Windows.Forms.Label
??? Friend WithEvents lblUserName As System.Windows.Forms.Label
??? Friend WithEvents txtPassword As System.Windows.Forms.TextBox
??? Friend WithEvents txtUserName As System.Windows.Forms.TextBox
??? Friend WithEvents grbDatabase As System.Windows.Forms.GroupBox
??? Friend WithEvents cboDatabase As System.Windows.Forms.ComboBox
??? Friend WithEvents btnCancel As System.Windows.Forms.Button
??? Friend WithEvents btnOk As System.Windows.Forms.Button
??? Friend WithEvents lblServer As System.Windows.Forms.Label
??? Private Sub InitializeComponent()
??????? Me.GroupBox1 = New System.Windows.Forms.GroupBox
??????? Me.txtServerName = New System.Windows.Forms.TextBox
??????? Me.cbWindowsAuthentication = New System.Windows.Forms.CheckBox
??????? Me.grpLogin = New System.Windows.Forms.GroupBox
??????? Me.lblPassword = New System.Windows.Forms.Label
??????? Me.lblUserName = New System.Windows.Forms.Label
??????? Me.txtPassword = New System.Windows.Forms.TextBox
??????? Me.txtUserName = New System.Windows.Forms.TextBox
??????? Me.grbDatabase = New System.Windows.Forms.GroupBox
??????? Me.cboDatabase = New System.Windows.Forms.ComboBox
??????? Me.btnCancel = New System.Windows.Forms.Button
??????? Me.btnOk = New System.Windows.Forms.Button
??????? Me.lblServer = New System.Windows.Forms.Label
??????? Me.GroupBox1.SuspendLayout()
??????? Me.grpLogin.SuspendLayout()
??????? Me.grbDatabase.SuspendLayout()
??????? Me.SuspendLayout()
??????? '
??????? 'GroupBox1
??????? '
??????? Me.GroupBox1.Controls.Add(Me.txtServerName)
??????? Me.GroupBox1.Controls.Add(Me.cbWindowsAuthentication)
??????? Me.GroupBox1.Controls.Add(Me.grpLogin)
??????? Me.GroupBox1.Controls.Add(Me.grbDatabase)
??????? Me.GroupBox1.Controls.Add(Me.btnCancel)
??????? Me.GroupBox1.Controls.Add(Me.btnOk)
??????? Me.GroupBox1.Controls.Add(Me.lblServer)
??????? Me.GroupBox1.Location = New System.Drawing.Point(8, 8)
??????? Me.GroupBox1.Name = "GroupBox1"
??????? Me.GroupBox1.Size = New System.Drawing.Size(321, 237)
??????? Me.GroupBox1.TabIndex = 15
??????? Me.GroupBox1.TabStop = False
??????? Me.GroupBox1.Text = "数据库设置"
??????? '
??????? 'txtServerName
??????? '
??????? Me.txtServerName.Location = New System.Drawing.Point(115, 30)
??????? Me.txtServerName.Name = "txtServerName"
??????? Me.txtServerName.Size = New System.Drawing.Size(178, 21)
??????? Me.txtServerName.TabIndex = 10
??????? Me.txtServerName.Text = ""
??????? '
??????? 'cbWindowsAuthentication
??????? '
??????? Me.cbWindowsAuthentication.Location = New System.Drawing.Point(38, 60)
??????? Me.cbWindowsAuthentication.Name = "cbWindowsAuthentication"
??????? Me.cbWindowsAuthentication.Size = New System.Drawing.Size(173, 22)
??????? Me.cbWindowsAuthentication.TabIndex = 1
??????? Me.cbWindowsAuthentication.Text = "使用Windows验证"
??????? '
??????? 'grpLogin
??????? '
??????? Me.grpLogin.Controls.Add(Me.lblPassword)
??????? Me.grpLogin.Controls.Add(Me.lblUserName)
??????? Me.grpLogin.Controls.Add(Me.txtPassword)
??????? Me.grpLogin.Controls.Add(Me.txtUserName)
??????? Me.grpLogin.Location = New System.Drawing.Point(29, 65)
??????? Me.grpLogin.Name = "grpLogin"
??????? Me.grpLogin.Size = New System.Drawing.Size(269, 73)
??????? Me.grpLogin.TabIndex = 2
??????? Me.grpLogin.TabStop = False
??????? '
??????? 'lblPassword
??????? '
??????? Me.lblPassword.Location = New System.Drawing.Point(10, 43)
??????? Me.lblPassword.Name = "lblPassword"
??????? Me.lblPassword.Size = New System.Drawing.Size(76, 22)
??????? Me.lblPassword.TabIndex = 13
??????? Me.lblPassword.Text = "密码"
??????? Me.lblPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight
??????? '
??????? 'lblUserName
??????? '
??????? Me.lblUserName.Location = New System.Drawing.Point(10, 17)
??????? Me.lblUserName.Name = "lblUserName"
??????? Me.lblUserName.Size = New System.Drawing.Size(76, 26)
??????? Me.lblUserName.TabIndex = 14
??????? Me.lblUserName.Text = "用户"
??????? Me.lblUserName.TextAlign = System.Drawing.ContentAlignment.MiddleRight
??????? '
??????? 'txtPassword
??????? '
??????? Me.txtPassword.Location = New System.Drawing.Point(86, 43)
??????? Me.txtPassword.Name = "txtPassword"
??????? Me.txtPassword.PasswordChar = Microsoft.VisualBasic.ChrW(42)
??????? Me.txtPassword.Size = New System.Drawing.Size(173, 21)
??????? Me.txtPassword.TabIndex = 4
??????? Me.txtPassword.Text = ""
??????? '
??????? 'txtUserName
??????? '
??????? Me.txtUserName.Location = New System.Drawing.Point(86, 17)
??????? Me.txtUserName.Name = "txtUserName"
??????? Me.txtUserName.Size = New System.Drawing.Size(173, 21)
??????? Me.txtUserName.TabIndex = 3
??????? Me.txtUserName.Text = ""
??????? '
??????? 'grbDatabase
??????? '
??????? Me.grbDatabase.Controls.Add(Me.cboDatabase)
??????? Me.grbDatabase.Location = New System.Drawing.Point(29, 142)
??????? Me.grbDatabase.Name = "grbDatabase"
??????? Me.grbDatabase.Size = New System.Drawing.Size(269, 52)
??????? Me.grbDatabase.TabIndex = 5
??????? Me.grbDatabase.TabStop = False
??????? Me.grbDatabase.Text = "数据库"
??????? '
??????? 'cboDatabase
??????? '
??????? Me.cboDatabase.ItemHeight = 12
??????? Me.cboDatabase.Location = New System.Drawing.Point(14, 22)
??????? Me.cboDatabase.Name = "cboDatabase"
??????? Me.cboDatabase.Size = New System.Drawing.Size(240, 20)
??????? Me.cboDatabase.TabIndex = 6
??????? '
??????? 'btnCancel
??????? '
??????? Me.btnCancel.Location = New System.Drawing.Point(176, 202)
??????? Me.btnCancel.Name = "btnCancel"
??????? Me.btnCancel.Size = New System.Drawing.Size(90, 25)
??????? Me.btnCancel.TabIndex = 8
??????? Me.btnCancel.Text = "&C取消"
??????? '
??????? 'btnOk
??????? '
??????? Me.btnOk.Location = New System.Drawing.Point(72, 202)
??????? Me.btnOk.Name = "btnOk"
??????? Me.btnOk.Size = New System.Drawing.Size(90, 25)
??????? Me.btnOk.TabIndex = 7
??????? Me.btnOk.Text = "&O确定"
??????? '
??????? 'lblServer
??????? '
??????? Me.lblServer.Location = New System.Drawing.Point(29, 30)
??????? Me.lblServer.Name = "lblServer"
??????? Me.lblServer.Size = New System.Drawing.Size(77, 26)
??????? Me.lblServer.TabIndex = 9
??????? Me.lblServer.Text = "服务器"
??????? Me.lblServer.TextAlign = System.Drawing.ContentAlignment.MiddleRight
??????? '
??????? 'frmMain
??????? '
??????? Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
??????? Me.ClientSize = New System.Drawing.Size(336, 253)
??????? Me.Controls.Add(Me.GroupBox1)
??????? Me.Name = "frmMain"
??????? Me.GroupBox1.ResumeLayout(False)
??????? Me.grpLogin.ResumeLayout(False)
??????? Me.grbDatabase.ResumeLayout(False)
??????? Me.ResumeLayout(False)

??? End Sub

#End Region

?

??? Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
??????? Dim xmlDoc As XmlDocument
??????? Dim topM As XmlNodeList
??????? xmlDoc = New XmlDocument
??????? xmlDoc.Load("Web.config")
??????? topM = xmlDoc.DocumentElement.ChildNodes
??????? For Each element As XmlElement In topM
??????????? If element.Name.ToLower() = "appsettings" Then
??????????????? Dim _node As XmlNodeList = element.ChildNodes
??????????????? If _node.Count > 0 Then
??????????????????? For Each el As XmlElement In _node
??????????????????????? If el.Attributes("key").InnerXml = "ServerName" Then _
??????????????????????????? txtServerName.Text = el.Attributes("value").Value
??????????????????????? If el.Attributes("key").InnerXml = "DataBaseName" Then _
??????????????????????????? cboDatabase.Text = el.Attributes("value").Value
??????????????????????? If el.Attributes("key").InnerXml = "UserName" Then _
???????????????????????????? txtUserName.Text = SecurityService.SymmetricDecrypt(el.Attributes("value").Value)
??????????????????????? If el.Attributes("key").InnerXml = "Password" Then _
??????????????????????????? txtPassword.Text = SecurityService.SymmetricDecrypt(el.Attributes("value").Value)
??????????????????????? If el.Attributes("key").InnerXml = "WindowsAuthentication" Then _
?????????????????????????? Me.cbWindowsAuthentication.Checked = Convert.ToBoolean(el.Attributes("value").Value)
??????????????????? Next
??????????????? End If

??????????? End If
??????? Next

??? End Sub

??? '**********************************************************************************************
??? '** Class:????????? GetDatabases
??? '**
??? '** Description:???
??? '**********************************************************************************************
??? Private Sub GetDatabases()

??????? Try

??????????? Dim oDatabase As New Database
??????????? cboDatabase.BeginUpdate()
??????????? Cursor.Current = Cursors.WaitCursor

??????????? Configuration.Server = txtServerName.Text
??????????? Configuration.Database = "master" 'cboDatabase.Text
??????????? Configuration.Password = txtPassword.Text
??????????? Configuration.UserName = txtUserName.Text
??????????? Configuration.WindowsAuthentication = cbWindowsAuthentication.Checked

??????????? Dim rd As SqlClient.SqlDataReader
??????????? rd = oDatabase.GetDatabases
??????????? While rd.Read()
??????????????? cboDatabase.Items.Add(rd.GetString(1))
??????????? End While
??????????? rd.Close()
??????????? cboDatabase.Sorted = True

??????? Catch AComException As System.Runtime.InteropServices.COMException

??????????? cboDatabase.DataSource = Nothing
??????????? cboDatabase.Items.Clear()
??????????? cboDatabase.Text = ""

??????????? MsgBox("Could not connect to " & txtServerName.Text & ".", MsgBoxStyle.Exclamation, _
??????????????? "SQL Connection Error")
??????? Catch e1 As Exception
??????????? MsgBox(e1.Message)

??????? Finally

??????????? cboDatabase.EndUpdate()
??????????? Cursor.Current = Cursors.Default

??????? End Try

??? End Sub

??? Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
??????? Dim xmlDoc As XmlDocument
??????? Dim topM As XmlNodeList
??????? xmlDoc = New XmlDocument
??????? xmlDoc.Load("Web.config")
??????? topM = xmlDoc.DocumentElement.ChildNodes
??????? For Each element As XmlElement In topM
??????????? If element.Name.ToLower() = "appsettings" Then
??????????????? Dim _node As XmlNodeList = element.ChildNodes
??????????????? If _node.Count > 0 Then
??????????????????? For Each el As XmlElement In _node
??????????????????????? If el.Attributes("key").InnerXml = "ServerName" Then _
?????????????????????????? el.Attributes("value").Value = txtServerName.Text
??????????????????????? If el.Attributes("key").InnerXml = "DataBaseName" Then _
?????????????????????????? el.Attributes("value").Value = cboDatabase.Text
??????????????????????? If el.Attributes("key").InnerXml = "UserName" Then _
?????????????????????????? el.Attributes("value").Value = SecurityService.SymmetricEncrypt(txtUserName.Text)
??????????????????????? If el.Attributes("key").InnerXml = "Password" Then _
?????????????????????????? el.Attributes("value").Value = SecurityService.SymmetricEncrypt(txtPassword.Text)
??????????????????????? If el.Attributes("key").InnerXml = "WindowsAuthentication" Then _
????????????????????????? el.Attributes("value").Value = Me.cbWindowsAuthentication.Checked.ToString()
??????????????????? Next
??????????????? End If

??????????? End If
??????? Next

??????? ' Write XML to file
??????? xmlDoc.Save("Web.config")
??????? Me.Close()

??? End Sub

??? Private Sub cbWindowsAuthentication_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbWindowsAuthentication.CheckedChanged

??????? If cbWindowsAuthentication.Checked Then
??????????? txtUserName.Text = ""
??????????? txtPassword.Text = ""
??????????? txtUserName.Enabled = False
??????????? txtPassword.Enabled = False
??????? Else
??????????? txtUserName.Enabled = True
??????????? txtPassword.Enabled = True
??????? End If

??????? Configuration.WindowsAuthentication = cbWindowsAuthentication.Checked
??? End Sub

??? Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
??????? If MsgBox("Are you sure you want to exit w/o configuring the database?", MsgBoxStyle.OKCancel) = MsgBoxResult.OK Then
??????????? Me.Close()
??????? End If
??? End Sub
??? Private Sub txtPassword_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPassword.LostFocus
??????? If cbWindowsAuthentication.Checked Or (txtUserName.Text <> "" And txtPassword.Text <> "") Then
??????????? GetDatabases()
??????? End If
??? End Sub
End Class

SecurityService类是用来加/解密的,这样用户就无法直接从Web.config中看到数据库用户和密码了。

时间: 2024-10-28 01:08:13

使用VB.Net做一个配置web.config功能的WinForm的相关文章

用VB.NET 做一个程序来控制打印机

问题描述 小弟现在要用VB.NET做一个程序来控制打印机,要实现的功能有:1.是否给用户打印(即如果用户不按照程序要求操作的话,就不给打印):2.保存打印的页数与打印的内容(jpg或pdf格式):现在不知道要从哪个方面入手来控制打印机,求各位高人指点..非常感激.由于小弟没有分,所以没办法给分..望各位慷慨指教..补充:用户在客户机,打印机放在服务机.或用户在服务机也能实现该功能. 解决方案 解决方案二:怎么没人顶啊.哎```解决方案三:友情up解决方案四:一种通过端口信息截获.一种写服务器程序

vb.net 做一个相册。。。保存在access中,高手们帮帮我啊,不会保存图片

问题描述 vb.net做一个相册...保存在access中,高手们帮帮我啊,不会保存图片 解决方案 解决方案二:去我的博客看吧http://blog.csdn.net/machong8183/article/details/5488300解决方案三:图片存文件流,百度一下或谷歌一下大把的源码.自己修改成功代码才是自己的.

源码-用javaSSH框架做一个简单的登录功能

问题描述 用javaSSH框架做一个简单的登录功能 用SSH框架做一个简单的登录功能,登录成功则跳转到一个页面,登录失败则跳转到一个失败页面,MySQL数据库.求大神指点,最好能提供源码 解决方案 Spring 3.x 企业应用开发实战的第一个例子就符合你的要求了.Mysql+srping3 解决方案二: 告诉我你的扣扣邮箱,我发你邮箱 解决方案三: 主要还是在struts2 里面,处理业务逻辑,再跳转到指定页面,关键在struts,xml配置文件里面

c#代码-用unity做一个多图片切换功能!

问题描述 用unity做一个多图片切换功能! 如图所示

用vc++ 6.0和mfc,想做一个虚拟硬盘的功能,请问怎么做?是用驱动编写么?

问题描述 用vc++ 6.0和mfc,想做一个虚拟硬盘的功能,请问怎么做?是用驱动编写么? 用vc++ 6.0和mfc,想做一个虚拟硬盘的功能,请问怎么做?是用驱动编写么? 解决方案 http://ask.csdn.net/questions/223664

代码-做一个贴吧评价功能,求大神指导啊。

问题描述 做一个贴吧评价功能,求大神指导啊. 做一个贴吧评价功能,简单的评价功能,小弟不才,求大神指导,这个代码怎么敲!

app耗流量大 让我做一个字符串压缩的功能

问题描述 app耗流量大 让我做一个字符串压缩的功能 百度来的方法 不好使呢 有的压了 有的怎么又变大了 求救啊 java的 解决方案 字符串压缩算法不一定在任何情况下都能压缩文本,这和你用压缩软件压缩不同的文件,得到的压缩比不同.重复压缩文件不会有效是一个道理. 具体要贴出你的测试数据才能知道你的压缩算法本身是否足够有效了.

一个修改web.config中appSettings配置节的函数

web|函数 这个函数主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节.要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限. -------------------------------------------------------------------------------- /// <summary> /// 修改web.config文件appSettings配置

一个修改web.config中appSettings配置节的函数-Web_Service开发-.NE

这个函数主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节.要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限. -------------------------------------------------------------------------------- /// <summary> /// 修改web.config文件appSettings配置节中的Add里