Files
TSUserReporter/Main.vb
2025-03-20 10:03:27 +01:00

350 lines
12 KiB
VB.net

Imports System.Environment
Imports System.Globalization
Imports System.IO
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 Reg As String = Nothing
If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing) Is Nothing Then
Reg = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer", "ClientID", Nothing)
Else
Reg = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing)
End If
Return Reg
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