Какой режим передачи FTP Вы используете (двоичный файл или ASCII?)? Я не на 100% уверен, но я думаю, вызываете ли Вы режим двоичного счета, у Вас не должно быть этой проблемы.
Простой способ - запустить процесс и выполнить команду NET TIME (скопировано с http://blogs.msdn.com/sanket/archive/2006/11/02 /synchronizing-machine-time-with-domain-controller.aspx)
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
Process netTime = new Process();
netTime.StartInfo.FileName = "NET.exe";
netTime.StartInfo.Arguments = "TIME /domain:mydomainname /SET /Y";
netTime.Start();
}
}
В дополнение к другим ответам:
Вам следует серьезно подумать о том, чтобы сделать понятие «текущее время» каким-либо образом внедренным в вашу систему. Непосредственное чтение системных часов очень проблематично (даже при запуске приложения) именно потому, что это глобальное состояние.
Самый простой способ - использовать System.Diagnostics.Process для запуска команды net time с соответствующими параметрами для синхронизации с вашим DC.
Запустите это из командной строки, чтобы узнать, о чем я говорю:
net time /?
Это можно сделать с помощью инструмента командной строки w32tm:
w32tm /resync
Это не C # и не .NET, но, надеюсь, он соответствует вашим требованиям.