376 lines
13 KiB
VB.net
376 lines
13 KiB
VB.net
Imports System
|
|
Imports System.Diagnostics
|
|
Imports System.Threading
|
|
Imports System.Diagnostics.Eventing.Reader
|
|
|
|
Public Class Main
|
|
Public WithEvents mstsc As New Process
|
|
|
|
Public sAppPath As String = Application.StartupPath
|
|
Public LDAP As String
|
|
Public autoconnect, autologoff As Boolean
|
|
Public debug As Boolean = False
|
|
Public ConBroker As String
|
|
Public ConString As String
|
|
Public ConType As String
|
|
Public MAC As String
|
|
Public ClientMode As Boolean
|
|
|
|
Dim lastupdate As DateTime
|
|
|
|
Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
Label1.Text = ""
|
|
Me.Text = "TSAnmeldung " & My.Resources.ProgVersion
|
|
|
|
SendEvents()
|
|
|
|
WoBinIch()
|
|
|
|
mstsc.EnableRaisingEvents = True
|
|
Try
|
|
Dim GroupList As List(Of String) = cRes.GetUserGroupMembership(Environment.UserName, LDAP)
|
|
For Each group As String In GroupList
|
|
If group = "CN=SG_DEBUG" Then
|
|
debug = True
|
|
Timer2.Enabled = True
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
Dim i As Integer
|
|
For Each s As String In Environment.GetCommandLineArgs
|
|
If i > 0 Then
|
|
If s = "/d" Or s = "-d" Then
|
|
autoconnect = False
|
|
autologoff = False
|
|
cRes.LocalUser.FillWithLoggedOnUser(False) : Report() : TimerReport.Enabled = True
|
|
ElseIf s = "/c" Or s = "-c" Then
|
|
autoconnect = False
|
|
autologoff = False
|
|
ClientMode = True
|
|
cboxStandort.Enabled = False
|
|
cRes.LocalUser.FillWithLoggedOnUser(False)
|
|
Anmeldung.deleteHostCred("rdpintern.verag.ag")
|
|
Anmeldung.deleteHostCred("remote.verag.ag")
|
|
Else
|
|
autoconnect = True
|
|
cRes.LocalUser.FillWithLoggedOnUser(False) : Report() : TimerReport.Enabled = True
|
|
End If
|
|
End If
|
|
i += 1
|
|
Next
|
|
If Environment.GetCommandLineArgs.Length = 1 Then
|
|
cRes.LocalUser.FillWithLoggedOnUser(False) : Report() : TimerReport.Enabled = True
|
|
End If
|
|
' MsgBox(autoconnect)
|
|
|
|
Timer1.Enabled = autoconnect
|
|
|
|
'cRes.LocalUser.FillWithLoggedOnUser(False)
|
|
cRes.LocalTeamviewerID = getTeamViewerID()
|
|
|
|
' Report()
|
|
|
|
|
|
Dim meh As New cPascom
|
|
meh.Anmelden()
|
|
|
|
End Sub
|
|
|
|
Public Function Report()
|
|
lastupdate = Date.Now
|
|
|
|
|
|
Dim ds As New DataSet
|
|
cSQL.SQL2DS("select * from TbL_ThinClients where Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' ", ds)
|
|
If Not ds.Tables(0).Rows.Count = 0 Then
|
|
RemoveSitzung()
|
|
End If
|
|
cSQL.InsertSQL("TbL_ThinClients", "(Benutzeranmeldename, Name, TeamviewerID, LastReport, ClientName, Domain, Company, SystemUpTime) VALUES (
|
|
'" & cRes.LocalUser.BenutzeranmeldeName & "',
|
|
'" & cRes.LocalUser.Name & "',
|
|
'" & cRes.LocalTeamviewerID & "',
|
|
'" & Date.Now & "',
|
|
'" & cRes.LocalUser.Hostname & "',
|
|
'" & cRes.LocalUser.Domäne & "',
|
|
'" & cRes.LocalUser.Company & "',
|
|
'" & cRes.getuptime(True) & "')")
|
|
End Function
|
|
|
|
Sub RemoveSitzung()
|
|
cSQL.DeleteSQL("TbL_ThinClients", "Benutzeranmeldename = '" & cRes.LocalUser.BenutzeranmeldeName & " ' ")
|
|
End Sub
|
|
|
|
Public Sub WoBinIch()
|
|
|
|
'MsgBox(Environment.UserDomainName)
|
|
|
|
Select Case Environment.UserDomainName
|
|
Case "VERAGOST"
|
|
cboxStandort.SelectedItem = "VERAG SUB (rdpintern.verag.ag)"
|
|
LDAP = "LDAP://DC=VERAG,DC=OST,DC=DMN"
|
|
autoconnect = True
|
|
autologoff = True
|
|
Case "VERAG-SBG"
|
|
cboxStandort.SelectedItem = "VERAG SBG (terminalsbg.verag.ag)"
|
|
LDAP = "LDAP://DC=VERAG-SBG,DC=LOCAL"
|
|
autoconnect = True
|
|
autologoff = True
|
|
Case "IMEX"
|
|
cboxStandort.SelectedItem = "VERAG SUB (rdpintern.verag.ag)"
|
|
LDAP = "LDAP://DC=IMEX,DC=LOCAL"
|
|
autoconnect = True
|
|
autologoff = True
|
|
Case Else
|
|
autoconnect = False
|
|
autologoff = False
|
|
End Select
|
|
|
|
'If Environment.UserDomainName = "VERAGOST" Then
|
|
' cboxStandort.SelectedItem = "VERAG SUB (rdpintern.verag.ag)"
|
|
' LDAP = "LDAP://DC=VERAG,DC=OST,DC=DMN"
|
|
' autoconnect = True
|
|
' autologoff = True
|
|
'ElseIf Environment.UserDomainName = "VERAG-SBG" Then
|
|
' cboxStandort.SelectedItem = "VERAG SBG (terminalsbg.verag.ag)"
|
|
' LDAP = "LDAP://DC=VERAG-SBG,DC=LOCAL"
|
|
' autoconnect = True
|
|
' autologoff = True
|
|
'Else
|
|
' autoconnect = False
|
|
' autologoff = False
|
|
'End If
|
|
|
|
If sAppPath Like "*\bin\Debug" Or Environment.UserName = "miesenbeck" Or Environment.UserName = "Administrator" Or autologoff = False Then
|
|
autoconnect = False
|
|
Me.ControlBox = True
|
|
End If
|
|
|
|
If Not LoadParameters(Environment.UserName, ConType, ConString) = False Then
|
|
cboxStandort.SelectedItem = "Personalisiert"
|
|
'ConString = LoadParameters(Environment.UserName)
|
|
End If
|
|
|
|
'Select Case Environment.UserName
|
|
' Case "miesenbeck"
|
|
' cboxStandort.SelectedItem = "Personalisiert"
|
|
' Case "bluxbauer"
|
|
' cboxStandort.SelectedItem = "Personalisiert"
|
|
'End Select
|
|
|
|
End Sub
|
|
|
|
|
|
Public Function rdp(host As String, Optional ByVal options As String = "", Optional ByVal rdpfile As String = "")
|
|
'Dim mstsc As New Process()
|
|
|
|
' mstsc.EnableRaisingEvents = True
|
|
If rdpfile = "" Then
|
|
mstsc.StartInfo.FileName = "mstsc.exe"
|
|
mstsc.StartInfo.UseShellExecute = False
|
|
mstsc.StartInfo.Arguments = " /v: " & host & " " & options
|
|
|
|
mstsc.Start()
|
|
Else
|
|
mstsc.StartInfo.FileName = "mstsc.exe"
|
|
mstsc.StartInfo.UseShellExecute = False
|
|
mstsc.StartInfo.Arguments = " \\verag.ost.dmn\NETLOGON\RDPs\" & rdpfile
|
|
|
|
mstsc.Start()
|
|
End If
|
|
|
|
|
|
Do
|
|
If Process.GetProcessesByName("mstsc").Length > 0 Then
|
|
Thread.Sleep(500)
|
|
Else
|
|
LogOff()
|
|
'Process.Start("shutdown", "-l")
|
|
'MsgBox("LogOff")
|
|
Exit Function
|
|
End If
|
|
Application.DoEvents()
|
|
Loop
|
|
|
|
End Function
|
|
|
|
Public Function killpro(processname As String)
|
|
For Each p As Process In Process.GetProcessesByName(processname)
|
|
p.Kill()
|
|
Next
|
|
End Function
|
|
|
|
Private Sub btnResetSession_Click(sender As Object, e As EventArgs) Handles btnResetSession.Click
|
|
killpro("mstsc")
|
|
'rdp("rdpintern.verag.ag", "/noConsentPrompt /multimon /control")
|
|
If ClientMode = False Then
|
|
connect()
|
|
Else
|
|
Dim frm As New Anmeldung
|
|
frm.Show()
|
|
Me.WindowState = FormWindowState.Minimized
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub connect()
|
|
|
|
Select Case cboxStandort.SelectedItem
|
|
Case "Personalisiert"
|
|
If ConType = "rdp" Then
|
|
rdp(-1, -1, ReturnTerminalserver())
|
|
Else
|
|
' MsgBox(ConString)
|
|
rdp(ConString, "/multimon")
|
|
End If
|
|
Case Else
|
|
If cRes.CheckTermServer(ReturnTerminalserver()) Then
|
|
rdp(ReturnTerminalserver(), "/multimon")
|
|
Else
|
|
autologoff = False
|
|
autoconnect = False
|
|
MsgBox("Verbindung konnte nicht aufgebaut werden (Server" & ReturnTerminalserver() & " ist nicht erreichbar)")
|
|
End If
|
|
End Select
|
|
|
|
End Sub
|
|
|
|
Private Sub btnLogOFF_Click(sender As Object, e As EventArgs) Handles btnLogOFF.Click
|
|
System.Diagnostics.Process.Start("shutdown", "-l")
|
|
End Sub
|
|
|
|
Public Sub SendEvents()
|
|
Dim query As New EventLogQuery("System", PathType.LogName)
|
|
Dim watcher As New EventLogWatcher(query)
|
|
|
|
AddHandler watcher.EventRecordWritten, AddressOf watcher_EventRecordWritten
|
|
watcher.Enabled = True
|
|
Console.ReadLine()
|
|
End Sub
|
|
|
|
Public Sub watcher_EventRecordWritten(sender As Object, e As EventRecordWrittenEventArgs)
|
|
'Console.WriteLine(e.EventRecord.ToXml())
|
|
If e.EventRecord.ProviderName = "uwfvol" Then
|
|
' MsgBox("EventID: " & e.EventRecord.Id & vbCrLf & "Info: " & e.EventRecord.Properties(0).Value)
|
|
If debug Then cRes.sendmsg("192.168.0.121", "EventID " & e.EventRecord.Id & "bei Benutzer " & Environment.UserName & " auf Rechner: " & Environment.MachineName & ", Uptime: " & cRes.getuptime())
|
|
If e.EventRecord.Id = 2 Then
|
|
MsgBox("Speicherauslastung am ThinClient ist kritisch und daher sollte dieser ehestmöglich neu gestartet werden!" & vbCrLf & "Wenn diese Meldung ÖFTER auftritt, bitte bei Sebastian (DW 861) Bescheid geben.", MsgBoxStyle.Critical, "Kritische Speicherauslastung")
|
|
cRes.bringtofocus("mstsc.exe")
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
|
|
Timer1.Enabled = False
|
|
'MsgBox("Tick")
|
|
connect()
|
|
End Sub
|
|
|
|
Private Sub btnShutdown_Click(sender As Object, e As EventArgs) Handles btnShutdown.Click
|
|
If MsgBox("ThinClient ausschalten?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
|
|
System.Diagnostics.Process.Start("shutdown", "-s -t 0")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Main_Closed(sender As Object, e As EventArgs) Handles Me.Closed
|
|
LogOff()
|
|
End Sub
|
|
|
|
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
|
|
cRes.Log2NAS("meh", "\\192.168.0.253\backup\temp_Sebastian\Logs\" & Environment.UserName & ".txt")
|
|
End Sub
|
|
|
|
Public Sub LogOff()
|
|
RemoveSitzung()
|
|
If sAppPath Like "*\bin\Debug" Or Environment.UserName = "miesenbeck" Or Environment.UserName = "Administrator" Or autologoff = False Then
|
|
Me.ControlBox = True
|
|
Else
|
|
Try
|
|
System.Diagnostics.Process.Start("shutdown", "-l")
|
|
Catch
|
|
End Try
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Public Function ReturnTerminalserver()
|
|
If cboxStandort.SelectedItem = "VERAG SUB (rdpintern.verag.ag)" Then Return "rdpintern.verag.ag"
|
|
If cboxStandort.SelectedItem = "VERAG SBG (terminalsbg.verag.ag)" Then Return "terminalsbg.verag.ag"
|
|
|
|
If cboxStandort.SelectedItem = "BACKUP" Then
|
|
If cRes.CheckTermServer("192.168.0.235") Then Return "192.168.0.235" : Exit Function
|
|
If cRes.CheckTermServer("192.168.0.101") Then Return "192.168.0.101" : Exit Function
|
|
If cRes.CheckTermServer("192.168.0.92") Then Return "192.168.0.92" : Exit Function
|
|
End If
|
|
|
|
If cboxStandort.SelectedItem = "Personalisiert" Then
|
|
Return ConString
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Function LoadParameters(ByVal Benutzername As String, ByRef _ConType As String, ByRef _ConString As String)
|
|
Try
|
|
Dim lines = IO.File.ReadAllLines("\\dc01.verag.ost.dmn\NETLOGON\TSAnmeldung.ini")
|
|
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(Benutzername, objFields(0).ToString, True) = 0 Then
|
|
_ConType = objFields(1).ToString
|
|
_ConString = objFields(2).ToString
|
|
Return True
|
|
Exit Function
|
|
End If
|
|
|
|
' End Select
|
|
Next
|
|
Return False
|
|
Catch ex As Exception
|
|
' MsgBox("Fehler beim Lesen TSAnmeldung.ini: " & vbCrLf & ex.Message)
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Private Sub TimerReport_Tick(sender As Object, e As EventArgs) Handles TimerReport.Tick
|
|
Report()
|
|
End Sub
|
|
|
|
Private Sub TelAnmelden_Click(sender As Object, e As EventArgs) Handles TelAnmelden.Click
|
|
Dim meh As New cPascom
|
|
meh.Anmelden()
|
|
'If meh.Anmelden() = True Then
|
|
' Label1.Text = "Telefon (neu) verbunden"
|
|
'Else
|
|
' Label1.Text = "Telefon nicht ermittelbar"
|
|
'End If
|
|
End Sub
|
|
|
|
|
|
Function getTeamViewerID()
|
|
Dim Reg As String = Nothing
|
|
If My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing) Is Nothing Then
|
|
If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer", "ClientID", Nothing) Is Nothing Then
|
|
Reg = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer", "ClientID", Nothing)
|
|
Else
|
|
Reg = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer", "ClientID", Nothing)
|
|
End If
|
|
Else
|
|
Reg = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\TeamViewer", "ClientIDOfTSUser", Nothing)
|
|
End If
|
|
Label1.Text = "TV ID: " & Reg
|
|
Label1.Visible = True
|
|
|
|
|
|
Return Reg
|
|
|
|
|
|
End Function
|
|
End Class
|