VB.NET-Tipp 0046: Die Zeiteinstellungen eines Rechners im Netzwerk auslesen
von Rolf Peter Stein
Beschreibung
Mit diesem Beispiel lässt sich unter Verwendung der Windows-API-Funktion NetRemoteTOD die Zeiteinstellung eines anderen Rechners auslesen.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2002/2003 ' Option Strict: Aus ' Option Explicit: An ' ' Referenzen: ' - System ' - System.Data ' - System.XML ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Data ' - System.Diagnostics ' ' ############################################################################## ' ################################ modMain.vb ################################## ' ############################################################################## Imports System.Runtime.InteropServices Module modMain ' Definition der benötigten API-Funktionen <DllImport("netapi32.dll", CharSet:=CharSet.Unicode)> _ Private Function NetRemoteTOD(ByVal UncServerName As String, _ ByRef BufferPtr As System.IntPtr) As Int32 End Function <DllImport("netapi32.dll")> _ Private Function NetApiBufferFree(ByRef BufferPtr As System.IntPtr) As Int32 End Function ' Stuktur für die Aufnahmen der Daten aus dem Aufruf der API-Funktion Public Structure struc_TOD Public tod_elapsedt As UInt32 Public tod_msecs As UInt32 Public tod_hours As UInt32 Public tod_mins As UInt32 Public tod_secs As UInt32 Public tod_hunds As UInt32 Public tod_timezone As Integer Public tod_tinterval As UInt32 Public tod_day As UInt32 Public tod_month As UInt32 Public tod_year As UInt32 Public tod_weekday As UInt32 Public Function Date_Time() As Date Dim s As String Dim t As Date s = tod_day.ToString + "." _ + tod_month.ToString + "." _ + tod_year.ToString + " " _ + tod_hours.ToString + ":" _ + tod_mins.ToString + ":" _ + tod_secs.ToString t = s Date_Time = t.AddMinutes(-tod_timezone) End Function End Structure ' Variable für die Daten Public tod As struc_TOD Sub Main() ' Pointer auf die Struktur der Werte: Dim ptodi As System.IntPtr ' Netzwerkadresse Dim NetAdr As String = "172.16.250.94" Try ' API-Call If (NetRemoteTOD(NetAdr, ptodi) <> 0) Then Console.WriteLine( _ "Ein Fehler ist beim Abfragen der Zeit aufgetreten!") Return End If ' Werte aus dem Speicher (Buffer) holen tod = Marshal.PtrToStructure(ptodi, GetType(struc_TOD)) ' Buffer wieder freigeben NetApiBufferFree(ptodi) ' ... alles ausgeben Console.WriteLine("address : [" + NetAdr + "]") Console.WriteLine("") Console.WriteLine("elapsedt : " + tod.tod_elapsedt.ToString) Console.WriteLine("msecs : " + tod.tod_msecs.ToString) Console.WriteLine("hours : " + tod.tod_hours.ToString) Console.WriteLine("mins : " + tod.tod_mins.ToString) Console.WriteLine("secs : " + tod.tod_secs.ToString) Console.WriteLine("hunds : " + tod.tod_hunds.ToString) Console.WriteLine("timezone : " + tod.tod_timezone.ToString) Console.WriteLine("tinterval: " + tod.tod_tinterval.ToString) Console.WriteLine("day : " + tod.tod_day.ToString) Console.WriteLine("month : " + tod.tod_month.ToString) Console.WriteLine("year : " + tod.tod_year.ToString) Console.WriteLine("weekday : " + tod.tod_weekday.ToString) Console.WriteLine("Date : " + tod.Date_Time.ToLongDateString) Console.WriteLine("Time : " + tod.Date_Time.ToLongTimeString) Catch ex As Exception Console.WriteLine(ex.ToString) End Try Console.ReadLine() End Sub End Module
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.