Imports System.Environment Imports System.Globalization Imports System.IO Imports Microsoft.Win32 Public Class TSUserReporter Dim lastupdate As DateTime Dim StartTime As DateTime Public sNetlogon As String = "\\verag.ost.dmn\NETLOGON" Public Printer As New List(Of Drucker) Dim Standarddrucker As New Drucker("", "") Dim Bondrucker As New Drucker("", "") Dim Niederlassung As New Drucker("", "") Public Message As String Dim ThinClient As String Dim isTS As Boolean = False Dim ID As String = "" Dim AutoUpdate As Boolean = True Private Sub TSUserReporter_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Visible = False StartTime = Date.Now Routine() SetPrinterRoutine() FillLabel() ID = StartTime.ToString("yyyy.MM.dd HH:mm:ss ") & cRes.LocalUser.BenutzeranmeldeName LogLogOn() End Sub Private Sub cmdGetLocalUser_Click(sender As Object, e As EventArgs) Handles cmdGetLocalUser.Click Routine() End Sub Sub Routine() Try cRes.LocalUser.FillWithLoggedOnUser(True, "LDAP://DC=VERAG,DC=OST,DC=DMN") ' MsgBox("1") cRes.LocalTeamviewerID = getregkey() ' MsgBox("2") cRes.LocalDomUser.getDomUserByBenutzerAnmeldename(Environment.UserDomainName, Environment.UserName) 'MsgBox("3") isTS = cRes.LocalUser.Hostname Like "TS*" 'isTS = True 'MsgBox(isTS) Report() ' FillLabel() If cRes.LocalDomUser.du_autologoff = True And cRes.DisableAutoLogoff = False Then CheckAutoLogOffAndIfthenAutoLogOff() End If Catch ex As Exception MsgBox("Routine:" & ex.Message) End Try End Sub Sub LogLogOn() 'Make ID Try cSQL.InsertSQL("TbL_LogOnLogOffLog", "(Benutzeranmeldename, LogOn, TSServer, LogOff, ID) VALUES ( '" & cRes.LocalUser.BenutzeranmeldeName & "', '" & Date.Now & "', '" & cRes.LocalUser.Hostname & "', ' ', '" & ID & "')") Catch ex As Exception End Try End Sub Function CheckAutoLogOffAndIfthenAutoLogOff() If cRes.LocalDomUser.du_autologofftime.TimeOfDay < DateTime.Now.TimeOfDay And DateTime.Now.TimeOfDay < cRes.LocalDomUser.du_autologofftime.AddMinutes(15).TimeOfDay Then Dim frm As New frmLogOff frm.Show() End If End Function Function getregkey() Dim regObj As Object = Nothing ' 1. HKCU regObj = Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing) If regObj IsNot Nothing Then Return regObj.ToString() ' 2. HKLM\WOW6432Node regObj = Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer", "ClientID", Nothing) If regObj IsNot Nothing Then Return regObj.ToString() ' 3. HKLM (Standard-Pfad, 64-bit) regObj = Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer", "ClientID", Nothing) If regObj IsNot Nothing Then Return regObj.ToString() ' Falls nichts gefunden Return Nothing End Function Function Report() Try lastupdate = Date.Now Dim ds As New DataSet cSQL.SQL2DS("select * from TbL_TSSitzungen where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' AND TSServer = '" & cRes.LocalUser.Hostname & "'", ds) If Not ds.Tables(0).Rows.Count = 0 Then RemoveSitzung() End If If isTS Then Dim ds2 As New DataSet cSQL.SQL2DS("select * from [TbL_ThinClients] where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & "'", ds2) 'cSQL.SQL2DS("select * from [TbL_ThinClients] where Benutzeranmeldename = 'veragost\tw' ", ds2) If Not ds2.Tables(0).Rows.Count = 0 Then ThinClient = ds2.Tables(0).Rows(0).Item("ClientName").ToString End If End If 'MsgBox(ThinClient) cSQL.InsertSQL("TbL_TSSitzungen", "(Benutzeranmeldename, Name, TeamviewerID, LastReport, Domain, Company, LastLogon, TSServer) VALUES ( '" & cRes.LocalUser.BenutzeranmeldeName & "', '" & cRes.LocalUser.Name & "', '" & cRes.LocalTeamviewerID & "', '" & Date.Now.ToString("dd.MM.yyyy HH:mm:ss", New CultureInfo("de").NumberFormat) & "', '" & cRes.LocalUser.Domäne & "', '" & cRes.LocalUser.Company & "', '" & StartTime.ToString("dd.MM HH:mm") & "', '" & cRes.LocalUser.Hostname & "')") Catch ex As Exception MsgBox("Report():" & vbCrLf & ex.Message) End Try SetUserEnviroment() End Function Function FillLabel() Label1.Text = "" Label1.Text &= cRes.LocalUser.BenutzeranmeldeName & vbCrLf Label1.Text &= cRes.LocalUser.Name & vbCrLf Label1.Text &= "Hostname:" & cRes.LocalUser.Hostname & vbCrLf Label1.Text &= "ThinClient:" & ThinClient& & vbCrLf Label1.Text &= "TeamviewerID: " & cRes.LocalTeamviewerID & vbCrLf Label1.Text &= vbCrLf Label1.Text &= "Letzte Aktualisierung:" & vbCrLf Label1.Text &= lastupdate & vbCrLf Label1.Text &= Standarddrucker.Druckername & vbCrLf Label1.Text &= Bondrucker.Druckername & vbCrLf Label1.Text &= "TimasID: " & cRes.LocalUser.TimasID & vbCrLf Label1.Text &= Message End Function Sub RemoveSitzung() cSQL.DeleteSQL("TbL_TSSitzungen", "Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' AND TSServer = '" & cRes.LocalUser.Hostname & "'") End Sub Sub LogLogOff() Dim where As String = "ID = '" & ID & "'" Dim Values As String = "LogOff ='" & Date.Now & "'" Try cSQL.UpdateSQL("TbL_LogOnLogOffLog", Values, where) Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub TSUserReporter_Closed(sender As Object, e As EventArgs) Handles Me.Closed LogLogOff() RemoveSitzung() End Sub Private Sub ReportToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ReportToolStripMenuItem.Click Routine() End Sub Private Sub BeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub Private Sub ReporterAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ReporterAnzeigenToolStripMenuItem.Click Me.Show() Me.WindowState = WindowState.Normal Me.Show() End Sub Private Sub cmdMini_Click(sender As Object, e As EventArgs) Handles cmdMini.Click Me.WindowState = WindowState.Minimized Me.Hide() End Sub Private Sub UpdateTimer_Tick(sender As Object, e As EventArgs) Handles UpdateTimer.Tick If AutoUpdate = True Then Routine() End If End Sub Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click Dim PrinterShortName As String = "" For Each printer As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters Dim position As Integer = printer.LastIndexOf("\") If position > 0 Then printer = printer.Substring(position + 1) End If PrinterShortName &= printer & vbCrLf Next MsgBox(PrinterShortName) End Sub Function SetUserEnviroment() Try Environment.SetEnvironmentVariable("PC_SERVER", Nothing, EnvironmentVariableTarget.User) Environment.SetEnvironmentVariable("PC_USER", Nothing, EnvironmentVariableTarget.User) Environment.SetEnvironmentVariable("timasID", cRes.LocalUser.TimasID, EnvironmentVariableTarget.User) ' Environment.SetEnvironmentVariable("PC_USER", cRes.LocalDomUser.mit_username & "@verag", EnvironmentVariableTarget.User) 'Environment.SetEnvironmentVariable("PC_PASS", cRes.LocalDomUser.mit_pwd, EnvironmentVariableTarget.User) ' Environment.SetEnvironmentVariable("PC_USE_CUSTOM_NOTIFICATIONS_AS_DEFAULT", "ENA", EnvironmentVariableTarget.User) ' MsgBox(Environment.GetEnvironmentVariable("PC_SErVER")) Message = "UserEnv eingetragen." Catch ex As Exception Message = ex.Message End Try End Function Public Function LoadDefaultPrinter(ByVal Hostname As String) Dim PrintINI As String = "" PrintINI = sNetlogon & "\ClientDrucker.ini" Printer.Clear() Try Dim lines = IO.File.ReadAllLines(PrintINI) Dim colCount = lines.First.Split(";"c).Length For Each line In lines Dim objFields = From field In line.Split(";"c) 'Select Case objFields(0).ToString ' Case Benutzername If String.Compare(Hostname, objFields(0).ToString, True) = 0 Then Dim printername As String = objFields(1).ToString Dim position As Integer = printername.LastIndexOf("\") If position > 0 Then printername = printername.Substring(position + 1) End If Dim p As New Drucker(printername, objFields(2).ToString) Printer.Add(p) '_ConString = objFields(2).ToString ' Return True ' Exit Function End If ' End Select Next If Printer.Count = 0 Then Dim p As New Drucker("kein Drucker hinterlegt", "") Printer.Add(p) Return False Else Return True End If Catch ex As Exception Return False ' MsgBox("Fehler beim Lesen TSAnmeldung.ini: " & vbCrLf & ex.Message) End Try ' End If End Function Public Function SetDefaultPrinter() Dim sp As String = "" For Each p As Drucker In Printer If p.Druckertype = "" Or p.Druckertype = "Standard" Then ''ip = installed printer ''sp = standard printer For Each ip As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters If ip.LastIndexOf(p.Druckername, StringComparison.OrdinalIgnoreCase) > 0 Then sp = ip End If Next Standarddrucker = p My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", "Device", sp) ElseIf p.Druckertype = "Bon" Then Bondrucker = p ElseIf p.Druckertype = "Niederlassung" Then Niederlassung = p End If Next writeoutAVISO_OPTIONS() End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click SetPrinterRoutine() FillLabel() End Sub Sub SetPrinterRoutine() If isTS Then If LoadDefaultPrinter(ThinClient) Then SetDefaultPrinter() End If Else If LoadDefaultPrinter(cRes.LocalUser.Hostname) Then SetDefaultPrinter() End If End If End Sub Sub writeoutAVISO_OPTIONS() Dim PrintINI As String = "C:\Users\" & cRes.LocalUser.Username & "\Documents\AVISO_OPTIONS.txt" Dim Text As String = "" If Printer.Count = 0 Then Text = "" Else Text = "PRINTER:" & Standarddrucker.Druckername & vbCrLf Text &= "BON:" & Bondrucker.Druckername & vbCrLf Text &= "Niederlassung:" & Niederlassung.Druckername End If Try System.IO.File.WriteAllText(PrintINI, Text) Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class Public Class Drucker Property Druckername As String = "" Property Druckertype As String = "" Sub New(a As String, b As String) Me.Druckername = a Me.Druckertype = b End Sub End Class