自动设置时间,需要看两个值,一个是W32Time下的Parameters里的Type值还有一个是W32Time本身下面的一个Start的值,这两个值设置自动就可以了,单独设置其中一个是不行的必须同时设置。
cs
private void isAutoTimeSetting()
{
bool isParametersAuto = false;
string keyName = @"SYSTEM\CurrentControlSet\Services\W32Time\Parameters";
using (RegistryKey rKey = Registry.LocalMachine.OpenSubKey(keyName))
{
if (rKey != null && rKey.GetValue("Type") != null)
{
string value = rKey.GetValue("Type").ToString();
if (value == "NTP")
{
isParametersAuto = true;
}
else if (value == "NoSync")
{
isParametersAuto = false;
}
}
rKey.Close();
}
bool isStartAuto = false;
string keyName1 = @"SYSTEM\CurrentControlSet\Services\W32Time";
using (RegistryKey rKey = Registry.LocalMachine.OpenSubKey(keyName1))
{
if (rKey != null && rKey.GetValue("Start") != null)
{
string value = rKey.GetValue("Start").ToString();
if (value == "3")
{
isStartAuto = true;
}
else if (value == "4")
{
isStartAuto = false;
}
}
rKey.Close();
}
if (isStartAuto && isParametersAuto)
{
AppendText(1, $"<Color>已经勾选为自动设置时间</Color>\n", Color.Green);
}
else
{
string tip = "未勾选为自动设置时间";
AppendText(1, $"<Color>{tip}</Color>,请检查!\n", Color.Red);
ErrorAdd(ErrorCode.systemTimeAutoSetting, tip);
}
}