SET TIME C#

NETVOO 31/07/2016 11:42:24
#465333
Pessoal estou tentando mudar a data e a hora do PC usando C#.

Tentei usar na minha aplicação uma forma que ele pega a data e hora online no a.ntp.br, só que quando não tem internet no pc ele gera uma lentidão no sistema que fica impossível de usar, mesmo implementando uma rotina para verificar primeiro se tem internet se não tiver ele não faz nada.

Então estou apelando agora para executar um comando no CMD para ajustar essa data e hora mas não estou achando exemplo de como aplicar o mesmo, fiz um baseado na documentação do win7 porem ele não ajusta e nem retorna erro e nada, mesmo o exe sendo executado como adm.
Ai tentei colocar para o pc sincronizar automático com o a.ntp.br isso com comando exemplo do win7 mas não altera e não retorna nada nem erro.
EX:
string gsgsgs = [Ô]NET TIME [Ô] + Environment.MachineName + [Ô] /DOMAIN: a.ntp.br /RTSDOMAIN: a.ntp.br /SET[Ô];

Alguém poderia disponibilizar algum método que possa alterar a data e hora ou que faça com que o win7 sincronize automático no a.ntp.br usando comando no cmd. e no C#

MARCOSPRADOS 02/09/2016 11:28:09
#466468
Resposta escolhida
Segue duas formas de alterar a hora, uma utilizando o cmd e outra totalmente via código, não testei, mas acredito que nos dois casos vc precisa rodas a aplicação com administrador

Forma 01

System.Diagnostics.Process.Start([Ô]CMD[Ô], [Ô]/C TIME 19:58[Ô]);

Forma 02

[DllImport([Ô]kernel32.dll[Ô], EntryPoint = [Ô]SetSystemTime[Ô], SetLastError = true)]
public extern static bool Win32SetSystemTime(ref SystemTime st);

private static void AlterTime()
{


SystemTime updatedTime = new SystemTime();
updatedTime.Year = (ushort)2016;
updatedTime.Month = (ushort)9;
updatedTime.Day = (ushort)03;
updatedTime.Hour = (ushort)10;
updatedTime.Minute = (ushort)0;
updatedTime.Second = (ushort)0;

Win32SetSystemTime(ref updatedTime);
}

public struct SystemTime
{
public ushort Year;
public ushort Month;
public ushort DayOfWeek;
public ushort Day;
public ushort Hour;
public ushort Minute;
public ushort Second;
public ushort Millisecond;
};
Tópico encerrado , respostas não são mais permitidas