36 lines
1.5 KiB
C#
36 lines
1.5 KiB
C#
using RTCSync.Services;
|
|
using RTCSync.Utils;
|
|
|
|
namespace RTCSync.Options;
|
|
|
|
public class SyncTimeOption : IOption
|
|
{
|
|
public string Description => "Синхронизирует системное время со временем модуля реального времени. Если часы хранят UTC время, то используйте опцию universal";
|
|
public List<string> OptionNames => ["-S", "--sync-time"];
|
|
public string OptionValues => "{local, l, universal, u}";
|
|
|
|
public void Execute(OptionArgs args)
|
|
{
|
|
var device = DeviceDispatcher.SetUpDevice();
|
|
if (device == null)
|
|
return;
|
|
|
|
Console.WriteLine("Время на модуле:");
|
|
DeviceReaders.PrintTimeRTC(device);
|
|
var timeModel = DeviceReaders.GetTimeRTC(device);
|
|
|
|
// время в формате понятном для kernel32
|
|
WindowsTimeUtils.SystemTime systime;
|
|
|
|
if (args.OptionValues.TryGetValue("unnamed", out var value) && value is "universal" or "u")
|
|
systime = new WindowsTimeUtils.SystemTime(timeModel.Time);
|
|
else if (value is "local" or "l")
|
|
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
|
|
else
|
|
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
|
|
|
|
Console.WriteLine(WindowsTimeUtils.SetSystemTime(ref systime)
|
|
? "Время установлено в системе"
|
|
: "Ошибка: нет прав администратора");
|
|
}
|
|
} |