Wenn man Anwendungen in einem kleinen Netzwerk installiert, kann es vorkommen, dass die Applikation sowohl auf dem Server, als auch auf den Clients läuft. Wie man herausfindet, ob der PC ein Client ist, oder doch der Server, das möchte ich euch mit dem nachfolgenden Tipp zeigen. Zuerst fügen wir 2 Klassen zum Projekt hinzu. Die Erste benennen wir myWMI und fügen folgenden Code ein. Zusätzlich wird noch die Referenz auf System.Management benötigt. Imports System.Management Imports System.Net Imports System.Net.Sockets Public Class myWMI Private objOS As ManagementObjectSearcher Private objCS As ManagementObjectSearcher Private objMgmt As ManagementObject Private m_strComputerName As String Private m_strManufacturer As String Private m_StrModel As String Private m_strOSName As String Private m_strOSVersion As String Private m_strSystemType As String Private m_strTPM As String Private m_strWindowsDir As String ' die IP Adresse ermitteln Private Addresslist() As IPAddress = _ Dns.GetHostByName(Dns.GetHostName()).AddressList Private strIPAddress As String = Addresslist(0).ToString ' Initialisiereungs-Prozedur Public Sub New() objOS = New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem") objCS = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem") For Each objMgmt In objOS.Get m_strOSName = objMgmt("name").ToString() m_strOSVersion = objMgmt("version").ToString() m_strComputerName = objMgmt("csname").ToString() m_strWindowsDir = objMgmt("windowsdirectory").ToString() Next For Each objMgmt In objCS.Get m_strManufacturer = objMgmt("manufacturer").ToString() m_StrModel = objMgmt("model").ToString() m_strSystemType = objMgmt("systemtype").ToString m_strTPM = objMgmt("totalphysicalmemory").ToString() Next End Sub ' Computername Public ReadOnly Property ComputerName() As String Get ComputerName = m_strComputerName End Get End Property ' Hersteller Public ReadOnly Property Manufacturer() As String Get Manufacturer = m_strManufacturer End Get End Property ' Modell Public ReadOnly Property Model() As String Get Model = m_StrModel End Get End Property ' Betriebssystem-Bezeichnung Public ReadOnly Property OsName() As String Get OsName = m_strOSName End Get End Property ' Betriebssystem-Version Public ReadOnly Property OSVersion() As String Get OSVersion = m_strOSVersion End Get End Property ' System-Typ Public ReadOnly Property SystemType() As String Get SystemType = m_strSystemType End Get End Property ' insgesamt verfügbarer physikalischer Speicher Public ReadOnly Property TotalPhysicalMemory() As String Get TotalPhysicalMemory = m_strTPM End Get End Property ' Windows-Verzeichnis Public ReadOnly Property WindowsDirectory() As String Get WindowsDirectory = m_strWindowsDir End Get End Property ' Eigene IP-Adresse Public ReadOnly Property myIPAdress() As String Get myIPAdress = strIPAddress End Get End Property End Class Aus diesem Code können wir mehrere Windows-interne Parameter abfragen. Für uns ist eigentlich nur die eigene IP Adresse wichtig. Die zweite Klasse nennen wir mySQLServer. Dazu benötigen wir die Referenz auf System.ServiceProcess. Public Class mySQLServer Public Const IsRunning As String = "Is Running" Public Const IsStopped As String = "Is Stopped" Public Const IsPaused As String = "Is Paused" Public Const IsNotInstalled As String = "Is Not Installed" Private myServiceController As System.ServiceProcess.ServiceController Public Function ServerStatus() As String ' Hier wird geschaut, ob der Server installiert ist Dim Server_Running As String myServiceController = New System.ServiceProcess.ServiceController("mySQL") Try Select Case myServiceController.Status Case Is = ServiceProcess.ServiceControllerStatus.Running Server_Running = IsRunning Case Is = ServiceProcess.ServiceControllerStatus.Stopped Server_Running = IsStopped Case Is = ServiceProcess.ServiceControllerStatus.Paused Server_Running = IsPaused End Select Catch Server_Running = IsNotInstalled End Try Return Server_Running End Function Public Function ConnectingToMyPC(ByVal ServerInformation As String) As Boolean ' Hier wird überprüft, ob das Programm auf diesen PC zugreift Dim myServer As Boolean Dim myWmi As New myWMI Select Case UCase(Trim(ServerInformation)) Case Is = "" myServer = False Case Is = UCase(myWmi.ComputerName), "LOCALHOST", myWmi.myIPAdress myServer = True Case Else myServer = False End Select Return myServer End Function End Class Im Programm können wir dann beispielsweise den Parameter wie folgt abrufen: Private Sub cmdServerButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdServerButton.Click Dim myServer As New mySQLServer Select Case myServer.ServerStatus ' Wenn der Server läuft/auf Pause/oder gestoppt wurde Case Is = myServer.IsPaused, myServer.IsRunning, myServer.IsStopped ' Überprüfen, ob das Programm auch auf diesen PC zugreift If myServer.ConnectingToMyPC(GetSetting("VOptNeu", "Firmendaten", "Server")) = True Then MsgBox("Auf diesem PC ist ein mySQL Server installiert" & vbCrLf & _ "Status: " & myServer.ServerStatus & vbCrLf & _ "Das Programm versucht auf diesen Server zuzugreifen!", _ MsgBoxStyle.Information, "mySQL Information") Else MsgBox("Auf diesem PC ist ein mySQL Server installiert" & vbCrLf & _ "Status: " & myServer.ServerStatus & vbCrLf & _ "Das Programm versucht NICHT auf diesen Server zuzugreifen!" & vbCrLf & _ "Möglichkeit: Replikationsserver", _ MsgBoxStyle.Information, "mySQL Information") End If Case Is = myServer.IsNotInstalled ' Wenn auf diesem PC kein Server installiert ist MsgBox("Auf diesem PC ist KEIN mySQL Server installiert!", _ MsgBoxStyle.Information, "mySQL Information") Case Else MsgBox("ERROR!", MsgBoxStyle.Information, "mySQL Information") End Select End Sub Dieser Tipp wurde bereits 15.553 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |