Imports System.IO Imports System.Runtime.ConstrainedExecution Imports System.Security.Cryptography Imports System.Text Imports System.Threading Public Class LoginForm1 ' TODO: 插入程式碼,利用提供的使用者名稱和密碼執行自訂驗證 ' (請參閱 https://go.microsoft.com/fwlink/?LinkId=35339)。 ' 如此便可將自訂主體附加到目前執行緒的主體,如下所示: ' My.User.CurrentPrincipal = CustomPrincipal ' 其中 CustomPrincipal 是用來執行驗證的 IPrincipal 實作。 ' 接著,My.User 便會傳回封裝在 CustomPrincipal 物件中的識別資訊, ' 例如使用者名稱、顯示名稱等。 Dim IP公, IP測1, IP測2, 印尼測試內網網段, 內網線路, 可登入 As Boolean Dim MACKK As String 'MAC碼 Dim diskId As String '數字ID Dim diskSerialNumber As String '硬碟序列 Dim diskModel As String '磁盘型態 Private ReadOnly 對話框(15) As String : Dim FFGG As Integer : Dim GGHH As Integer Dim Str As String = Application.StartupPath Private Sub 語言轉換讀取() If 系統語言 = "繁體中文" Then : 語言 = "CH" : ElseIf 系統語言 = "English" Then : 語言 = "EN" : ElseIf 系統語言 = "Indonesian" Then : 語言 = "IN" : End If 密碼_lb.Text = 系統語言字典("G000-103-" & 語言) : 執行檔版本號_lb.Text = 系統語言字典("G000-102-" & 語言) & " : " & 版本 資料庫版本號_lb.Text = 系統語言字典("G000-104-" & 語言) & " : " & 資料庫版本 : 系統語言_lb.Text = 系統語言字典("G000-100-" & 語言) 公司線路_rb.Text = 系統語言字典("H000-100-" & 語言) : 伺服器區域_lb.Text = 系統語言字典("H000-101-" & 語言) : 對話框(5) = 系統語言字典("H000-113-" & 語言) 使用者名稱_lb.Text = 系統語言字典("H000-104-" & 語言) : 對話框(1) = 系統語言字典("H000-109-" & 語言) : 對話框(7) = 系統語言字典("H000-115-" & 語言) 測試線路_rb.Text = 系統語言字典("H000-105-" & 語言) : 對話框(3) = 系統語言字典("H000-111-" & 語言) : 對話框(9) = 系統語言字典("H000-108-" & 語言) 對話框(0) = 系統語言字典("H000-107-" & 語言) : 對話框(2) = 系統語言字典("H000-110-" & 語言) : 對話框(4) = 系統語言字典("H000-112-" & 語言) 對話框(6) = 系統語言字典("H000-114-" & 語言) : 對話框(8) = 系統語言字典("H000-116-" & 語言) : 對話框(10) = 系統語言字典("H000-106-" & 語言) 對話框(11) = 系統語言字典("H000-117-" & 語言) : 對話框(12) = 系統語言字典("H000-118-" & 語言) : 對話框(13) = 系統語言字典("H000-119-" & 語言) 對話框(14) = 系統語言字典("H000-120-" & 語言) : 對話框(15) = 系統語言字典("H000-102-" & 語言) End Sub Private Sub Set_清單1() Dim ds2 As New DataSet ftp清單_dgv.DataSource = Nothing : ds2.Clear() ftp清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing ftp清單_dgv.ColumnHeadersHeight = 25 ftp清單_dgv.AllowUserToAddRows = False SQL_FTP資料夾路徑分配() da.Fill(ds2) : ftp清單_dgv.DataSource = ds2.Tables(0) : conn.Close() End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 伺服器區域_cb.SelectedIndexChanged '-----------------------確認登入伺服器位置----------------------------------------------------------------------------------------------------------------------------------------- If 伺服器區域_cb.Text = "公司內網" Then IP公 = True If IP公 = True Then : 登入人IP = "192.168.1.63,2433" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If ElseIf 伺服器區域_cb.Text = "公司雲端" Then IP公 = True If IP公 = True Then : 登入人IP = PA49 : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If ElseIf 伺服器區域_cb.Text = "測試雲端" Then IP測1 = True If IP測1 = True Then : 登入人IP = "106.1.48.106,4567" : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If ElseIf 伺服器區域_cb.Text = "印尼測試" Then If IP測2 = True Then : 登入人IP = "192.168.1.63,2433" If SQL_連線狀態模組2.ConnectTest2("192.168.1.63,2433") = True Then : 登入() : 刷卡登入_ch.Checked = True : Else : MGB(對話框(11), 1) : Me.Close() : End If Else : MGB(對話框(11), 1) : Me.Close() : End If End If End Sub Private Sub 登入() '-----------------------寫入連線字串----------------------------------------------------------------------------------------------------------------------------------------------- If Strings.Left(伺服器區域_cb.Text, 2) = "印尼" Or Strings.Left(伺服器區域_cb.Text, 2) = "公司" Then SQL_連線字串_正式() : SQL_連線字串_正式_工程SQL() : SQL_連線字串_正式_管理SQL() Else SQL_連線字串_測試() : SQL_連線字串_測試_工程SQL() : SQL_連線字串_測試_管理SQL() End If g_conn_type = 伺服器區域_cb.Text & "伺服器" '-----------------------系統版本號寫入----------------------------------------------------------------------------------------------------------------------------------------------- SQL_系統版本號驗證() If dr.Read() Then : 資料庫版本 = dr("內帳系統") : 版本號 = dr("內帳系統") : End If : conn.Close() 語言轉換讀取() 系統語言_cb.Items.Clear() : 系統語言_cb.Items.Add("繁體中文") : 系統語言_cb.Items.Add("Indonesian") : 系統語言_cb.Items.Add("English") '-----MAC碼與硬碟資料------------------------------------------------------------------------------------------------------------------------------------------------------------- Dim Wmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration") For Each WmiObj As Management.ManagementObject In Wmi.Get If CBool(WmiObj("IPEnabled")) Then MACKK = WmiObj("MACAddress") End If Next Dim cmicWmi As New Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") For Each cmicWmiObj As Management.ManagementObject In cmicWmi.Get diskId = cmicWmiObj("size") 'diskId = cmicWmiObj("signature") diskSerialNumber = cmicWmiObj("serialnumber") diskModel = cmicWmiObj("Model") Exit For Next End Sub Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 語言轉換讀取() Panel1.SendToBack() : 伺服器區域_cb.Text = 計算機.伺服器區域_cb.Text : 系統語言_cb.Text = 系統語言 低網速模式 = True '-----------------------FTP資料夾登入位置宣告-------------------------------------------------------------------------------------------------------------------------------------- SQL_FTP伺服器登入位置() If dr.Read() Then Target = dr("FTP地址") : FTP帳號 = dr("FTP帳號") : FTP密碼 = dr("FTP密碼") : FTP物理位置 = dr("FTP物理位置") End If : conn.Close() Set_清單1() Dim HH As String = "" For i As Integer = 0 To ftp清單_dgv.Rows.Count - 1 If i < 10 Then : HH = "0" & i : ElseIf i >= 10 Then : HH = i : End If If ftp清單_dgv("指定", i).Value.ToString = "AA" & HH Then : AA(i) = ftp清單_dgv("資料夾名稱", i).Value.ToString : End If Next If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then 登入() : 自動更新2() Else : End If End Sub Private Sub LoginForm1_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing 計算機.Close() End Sub Private Sub 系統語言_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 系統語言_cb.SelectedIndexChanged 系統語言 = 系統語言_cb.Text Dim strDirName As String : Dim Strs As String = Application.StartupPath If File.Exists(Strs & "\LANGUAGE.txt") Then : File.Delete(Strs & "\LANGUAGE.txt") : End If strDirName = Strs & "\LANGUAGE.txt" Try Using fs As New IO.FileStream(strDirName, FileMode.Append) Using sw As New StreamWriter(fs, Encoding.Default) Dim stra As String If 系統語言 = "繁體中文" Then : stra = "CHER" : ElseIf 系統語言 = "English" Then : stra = "Engl" ElseIf 系統語言 = "Indonesian" Then : stra = "Indo" : Else : stra = "CHER" : End If sw.WriteLine(stra) '插入一整行 sw.Flush() End Using End Using Catch ex As Exception : End Try : 語言轉換讀取() End Sub Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click If 系統語言_cb.Text = " " Or 系統語言_cb.Text = "" Then : MGB(對話框(9), 1) Else '-----電腦綁定判斷------------------------------------------------------------------------------------------------------------------------------------------------------------- If 登入綁定_ch.Checked = True Then PA1 = MACKK : PA2 = diskId : PA3 = diskSerialNumber : PA4 = diskModel SQL_電腦綁定() If dr.Read() Then conn.Close() : 登入第一層() Else If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then conn.Close() : 登入第一層() Else conn.Close() : MGB(對話框(6), 1) : Me.Close() End If End If Else conn.Close() : 登入第一層() End If End If End Sub Private Sub 登入第一層() If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then If 伺服器區域_cb.Text = "測試雲端" Then 自動更新2() 登入程序() : 判斷重登 = False Else MGB(對話框(1), 1) 登入程序() : 判斷重登 = False End If Else 登入程序() : 判斷重登 = False End If Else If Strings.Right(執行檔版本號_lb.Text, 10) <> Strings.Right(資料庫版本號_lb.Text, 10) Then If 伺服器區域_cb.Text = "測試雲端" Then 自動更新2() Else MGB(對話框(1), 1) End If Else 登入程序() : 判斷重登 = False End If End If End Sub Private Sub 登入程序() If 帳號_rtb.Text = "" Then : MGB(對話框(2), 1) : ElseIf 帳號_rtb.Text <> "" Then If 帳號_rtb.Text = "" Then : MGB(對話框(3), 1) : ElseIf 帳號_rtb.Text <> "" Then SQL_使用者級別宣告() : If dr.Read() Then : 登入人級別 = dr("級別").ToString : End If SQL_系統預設值() If dr.Read() Then 密碼時限 = dr("密碼重設天數") : 行政採購簽核級別基數 = dr("行政採購二級") : 建築採購簽核級別基數 = dr("建築採購二級") 比例1 = dr("比例1") : 比例2 = dr("比例2") : 比例3 = dr("比例3") : 分母 = dr("圖片伺服器上限") : 工程圖庫限制 = dr("圖片伺服器上限") End If SQL_使用者權限宣告() If dr.Read() Then 密碼驗證_tb.Text = dr("密碼").ToString : 密碼日期_tb.Text = dr("密碼日期").ToString gUserName = dr("姓名").ToString : 登入人部門 = dr("部門").ToString : 登入人課別 = dr("課別").ToString 登入人組別 = dr("組別").ToString For I As Integer = 1 To 權限數量 : CC(I) = dr.Item(I + 8 - 1) : Next FFGG = DateDiff("d", 密碼日期_tb.Text, Format(Today(), "yyyy/MM/dd")) If CC(45) = True Then : GGHH = 密碼時限 - FFGG If GGHH <= 0 Then MGB(對話框(4), 1) : 個人帳號管理.ShowDialog() Else : 登入第二層() : End If Else : 登入第二層() : End If Else : MGB(對話框(15), 1) : End If : dr.Close() End If End If conn.Close() End Sub Private Sub 登入第二層() If 密碼_rtb.Text = 密碼驗證_tb.Text Then If 密碼驗證_tb.Text = "" Then : MGB(對話框(5), 1) Else Me.Hide() : HX_PGS_ERP_SYS.Show() : 密碼_rtb.Text = "" : 帳號_rtb.Text = "" End If ElseIf 密碼_rtb.Text <> 密碼驗證_tb.Text Then : MGB(對話框(5), 1) : End If End Sub Private Sub 自動更新2() Dim Str As String = Application.StartupPath If File.Exists(Str + "\NOTAUTO.txt") Then If 帳號_rtb.Text = "b70340" Or 帳號_rtb.Text = "B70340" Then : Else : End If Else My.Computer.Network.DownloadFile(Target & AA(0) & "/" & "Calculator-SYS-UPDATE.exe", Str + "\Calculator-SYS-UPDATE.exe") Shell(Str + "\Calculator-SYS-UPDATE.exe", vbNormalFocus) : Me.Close() End If End Sub Private Sub 公司線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 公司線路_rb.Click If IP公 = False Then : 公司線路_rb.Checked = False : 測試線路_rb.Checked = True : MGB(對話框(12), 1) Else : 伺服器區域_cb.Text = "公司雲端" : 公司線路_rb.Checked = True : 測試線路_rb.Checked = False : MGB(對話框(13), 1) : End If End Sub Private Sub 測試線路_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 測試線路_rb.Click 公司線路_rb.Checked = False : 測試線路_rb.Checked = True If IP測1 = True Or IP測2 = True Then : 伺服器區域_cb.Text = "測試雲端" : ElseIf IP測1 = False And IP測2 = False Then : 伺服器區域_cb.Text = "公司雲端" : MGB(對話框(14), 1) : End If End Sub Private Sub 帳號_rtb_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles 帳號_rtb.GotFocus 帳號_rtb.ImeMode = 2 End Sub Private Sub UsernameTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 帳號_rtb.KeyPress If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If End Sub Private Sub PasswordTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 密碼_rtb.KeyPress If e.KeyChar = ChrW(13) Then : Me.OK.PerformClick() : End If End Sub Private Sub UsernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles 帳號_rtb.TextChanged If 刷卡登入_ch.Checked = False Then : Else If IsNumeric(帳號_rtb.Text) = True Then If 帳號_rtb.Text.Length = 10 Then SQL_刷卡登入() If dr.Read() Then 帳號_rtb.Text = dr("帳號").ToString : 密碼_rtb.Text = dr("密碼").ToString : conn.Close() Else 帳號_rtb.Text = "" : 密碼_rtb.Text = "" : conn.Close() End If Exit Sub : Me.OK.PerformClick() End If End If End If End Sub Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles 刷卡登入_ch.Click 帳號_rtb.Focus() End Sub Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click 計算機.Close() End Sub End Class