Introduction
This project shows how to use the NetRemoteTOD
to retrieve the date/time from a remote server using VB.NET
Imports
Add the following imports line to your code:
Imports System.Runtime.InteropServices
API Functions
Add the following functions to your code:
Private Declare Unicode Function NetRemoteTOD Lib "netapi32" ( _
<MarshalAs(UnmanagedType.LPWStr)> ByVal ServerName As String, _
ByRef BufferPtr As IntPtr) As Integer
Private Declare Function NetApiBufferFree Lib _
"netapi32" (ByVal Buffer As IntPtr) As Integer
Structures
Add the following structure to your code:
Structure TIME_OF_DAY_INFO
Dim tod_elapsedt As Integer
Dim tod_msecs As Integer
Dim tod_hours As Integer
Dim tod_mins As Integer
Dim tod_secs As Integer
Dim tod_hunds As Integer
Dim tod_timezone As Integer
Dim tod_tinterval As Integer
Dim tod_day As Integer
Dim tod_month As Integer
Dim tod_year As Integer
Dim tod_weekday As Integer
End Structure
Functions
Add the following function to your code:
Function GetNetRemoteTOD(ByVal strServerName As String) As Date
Try
Dim iRet As Integer
Dim ptodi As IntPtr
Dim todi As TIME_OF_DAY_INFO
Dim dDate As Date
strServerName = strServerName & vbNullChar
iRet = NetRemoteTOD(strServerName, ptodi)
If iRet = 0 Then
todi = CType(Marshal.PtrToStructure(ptodi, GetType(TIME_OF_DAY_INFO)), _
TIME_OF_DAY_INFO)
NetApiBufferFree(ptodi)
dDate = DateSerial(todi.tod_year, todi.tod_month, todi.tod_day) + " " + _
TimeSerial(todi.tod_hours, todi.tod_mins - todi.tod_timezone, todi.tod_secs)
GetNetRemoteTOD = dDate
Else
MsgBox("Error retrieving time")
End If
Catch
MsgBox("Error in GetNetRemoteTOD: " & Err.Description)
End Try
End Function
Calling the function
Here is a sample code used to call the function. "servername" is replaced with the name of the actual server that you want to get the date/time from:
Dim dRemoteDate As Date
dRemoteDate = GetNetRemoteTOD("servername")
MsgBox("The remote date is " & dRemoteDate)
Conclusion
That's all folks! I wanted to make this as easy to understand as possible. I am also attaching a complete sample project which has this interface:

Let me know if you have any questions.