1) non conosco una procedura diretta per la modifica del registry da remoto ed ho ovviato il problema creando 2 applicazioni una server e una client che comunicano tramite winsock la server invia i comandi dos sotto forma di stringa e il client li passa ad una shell dos, se così ti interessa fammi sapere vedo se ritrovo il codice da qualche parte.

2)

passa alla funzione trovaora il nome del computer di cui ti serve data e ora
codice:
Private Declare Function NetRemoteTOD Lib "NETAPI32.DLL" _
    (ByVal server As String, buffer As Any) As Long
Private Declare Function NetApiBufferFree Lib "NETAPI32.DLL" _
    (ByVal buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)


Private Type TIME_OF_DAY
   t_elapsedt As Long
   t_msecs As Long
   t_hours As Long
   t_mins As Long
   t_secs As Long
   t_hunds As Long
   t_timezone As Long
   t_tinterval As Long
   t_day As Long
   t_month As Long
   t_year As Long
   t_weekday As Long
End Type
 Function trovaora(serName as string)as date
    Dim t As TIME_OF_DAY
    Dim st As SYSTEMTIME
    Dim tPtr As Long
    Dim dwret As Long
    Dim szServer As String
    Dim days As Date
    
    szServer = StrConv(serName, vbUnicode)    'Converte  server name in unicode
    res = NetRemoteTOD(szServer, tPtr)
    If res = 0 Then
        CopyMemory t, ByVal tPtr, Len(t) 'copia nella struttura time of day
        days = DateSerial(70, 1, 1) + (t.t_elapsedt / 60 / 60 / 24)
        NetApiBufferFree (tPtr) 'libera la memoria
    Else
        MsgBox "Non è stato trovato nessun computer col nome: " & serName, vbCritical, App.EXEName
        'Error 53: server non trovato
        exit function
    End If
    TrovaOra = days
    
 end sub