Imports System.IO Imports System.Xml Module ModuleMySettings 'Dim ConfigPath As String = Path.Combine(Application.UserAppDataPath(), "UserConfig.xml") Public Const CONFIG_FILE = "UserConfig.xml" Public MyConnectionString As String = "" Public LogErrorsOnly As Boolean = True Public GI_withWindream As Boolean = False Public vWLaufwerk As String = "W" Public Preview As Boolean = True Public UniversalViewer_Path As String Public FW_started As Boolean = False Public FWSCAN_started As Boolean = False Public Function GetUserConfigPath() As String Return Path.Combine(Application.UserAppDataPath(), CONFIG_FILE) End Function Public Function GetAllUsersConfigPath() As String Return Path.Combine(Application.CommonAppDataPath(), CONFIG_FILE) End Function Public Function GetCurrentConfigPath() As String If File.Exists(GetUserConfigPath()) Then Return GetUserConfigPath() Else Return GetAllUsersConfigPath() End If End Function Public Function LoadMyConfig() Dim rowresult As String = "" Try Dim oDatatable As DataTable ''if file doesn't exist, create the file with its default xml table 'If Not File.Exists(ConfigPath) Then ' DT = CreateConfigTable() ' DT.WriteXml(ConfigPath) 'End If 'DT = GetTablefromXML() ' if file in %APPDATA% doesn't exist, ' check for file in %ALLUSERSPROFILE%, ' otherwise create the file with its default xml table If File.Exists(GetUserConfigPath()) Then oDatatable = GetTablefromXML(GetUserConfigPath()) ElseIf File.Exists(GetAllUsersConfigPath()) Then oDatatable = GetTablefromXML(GetAllUsersConfigPath()) Else oDatatable = CreateConfigTable() oDatatable.WriteXml(GetUserConfigPath()) End If For Each Row As DataRow In oDatatable.Rows rowresult &= Row.Item("ConfigName") Select Case Row.Item("ConfigName") Case "MyConnectionString" Dim connstring As String 'Den ConnectonString mit verschlüsseltem PW laden Dim csb As New SqlClient.SqlConnectionStringBuilder csb.ConnectionString = Row.Item("Value") If csb.ConnectionString.Contains("Password=") Then 'SA-Auth 'Jetzt das Passwort entschlüsseln Dim PWplainText As String Dim wrapper As New ClassEncryption("!35452didalog=") ' DecryptData throws if the wrong password is used. Try PWplainText = wrapper.DecryptData(csb.Password) Catch ex As Exception ClassLogger.Add("- the Password '" & csb.Password & "' could not be decrypted", False) PWplainText = csb.Password End Try connstring = Row.Item("Value").ToString.Replace(csb.Password, PWplainText) Else 'Win-Auth connstring = Row.Item("Value").ToString End If MyConnectionString = connstring Case "LogErrorsOnly" LogErrorsOnly = CBool(Row.Item("Value")) Case "Preview" Preview = CBool(Row.Item("Value")) Case "UniversalViewer" UniversalViewer_Path = Row.Item("Value") Case "FW_started" FW_started = CBool(Row.Item("Value")) Case "FWSCAN_started" FWSCAN_started = CBool(Row.Item("Value")) Case "Delete_OriginFile" CURR_DELETE_ORIGIN = CBool(Row.Item("Value")) End Select Next 'update 1.1 If rowresult.Contains("FW_started") = False Then Dim newRow As DataRow = oDatatable.NewRow() newRow("ConfigName") = "FW_started" newRow("Value") = "False" oDatatable.Rows.Add(newRow) oDatatable.WriteXml(GetUserConfigPath()) End If 'update 1.6 If rowresult.Contains("Delete_OriginFile") = False Then Dim newRow As DataRow = oDatatable.NewRow() newRow("ConfigName") = "Delete_OriginFile" newRow("Value") = "False" oDatatable.Rows.Add(newRow) oDatatable.WriteXml(GetUserConfigPath()) End If If rowresult.Contains("FWSCAN_started") = False Then Dim newRow As DataRow = oDatatable.NewRow() newRow("ConfigName") = "FWSCAN_started" newRow("Value") = "False" oDatatable.Rows.Add(newRow) oDatatable.WriteXml(GetUserConfigPath()) End If Catch ex As Exception MsgBox("Error in MySettings-LoadMyConfig" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try Return True End Function Private Function GetTablefromXML(ConfigPath As String) Try Dim DS As New DataSet DS.ReadXml(ConfigPath) Return DS.Tables(0) Catch ex As Exception MsgBox("Error in GetTablefromXML" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try End Function Private Function CreateConfigTable() As DataTable Try ' Create sample Customers table, in order ' to demonstrate the behavior of the DataTableReader. Dim oTable As New DataTable oTable.TableName = "MyConfig" ' Create two columns, ID and Name. Dim oIdColumn As DataColumn = oTable.Columns.Add("ID", GetType(System.Int32)) oIdColumn.AutoIncrement = True oIdColumn.AutoIncrementSeed = 0 oIdColumn.AutoIncrementStep = 1 oTable.Columns.Add("ConfigName", GetType(System.String)) oTable.Columns.Add("Value", GetType(System.String)) 'Set the ID column as the primary key column. oTable.PrimaryKey = New DataColumn() {oIdColumn} Dim newRow As DataRow = oTable.NewRow() newRow("ConfigName") = "MyConnectionString" newRow("Value") = "" oTable.Rows.Add(newRow) Dim newRow1 As DataRow = oTable.NewRow() newRow1("ConfigName") = "LogErrorsOnly" newRow1("Value") = "True" oTable.Rows.Add(newRow1) Dim newRow2 As DataRow = oTable.NewRow() newRow2("ConfigName") = "Preview" newRow2("Value") = "True" oTable.Rows.Add(newRow2) Dim newRow3 As DataRow = oTable.NewRow() newRow3("ConfigName") = "UniversalViewer" newRow3("Value") = "" oTable.Rows.Add(newRow3) Dim newRow4 As DataRow = oTable.NewRow() newRow4("ConfigName") = "FW_started" newRow4("Value") = "False" oTable.Rows.Add(newRow4) Dim newRow5 As DataRow = oTable.NewRow() newRow5("ConfigName") = "FWSCAN_started" newRow5("Value") = "False" oTable.Rows.Add(newRow5) oTable.AcceptChanges() Return oTable Catch ex As Exception MsgBox("Error in CreateConfigTable" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try End Function ''' ''' Save settings to user config, NOT to common config ''' Public Function SaveConfigValue(name As String, value As String) Try Dim oUserConfigPath = GetUserConfigPath() Dim oCurrentConfigPath = GetCurrentConfigPath() Dim oDatatable As DataTable = GetTablefromXML(oCurrentConfigPath) For Each Row As DataRow In oDatatable.Rows If Row.Item("ConfigName") = name Then Row.Item("Value") = value End If Next oDatatable.AcceptChanges() oDatatable.WriteXml(oUserConfigPath) Return True Catch ex As Exception MsgBox("Error in SaveConfigValue" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function Public Function Load_BasicConfig() Try ClassDatabase.Init() Dim sql As String = "select * from tbdd_Modules where NAME = 'Global-Indexer'" Dim DT As DataTable = ClassDatabase.Return_Datatable(sql) If DT.Rows.Count = 1 Then GI_withWindream = DT.Rows(0).Item("BIT1") vWLaufwerk = DT.Rows(0).Item("STRING1") Else Return False End If Catch ex As Exception MsgBox("Error in Load_BasicConfig" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try Return True End Function End Module