Como um programa do Windows pode alterar temporariamente seu fuso horário?

Eu escrevi uma função para retornar otime_t valor correspondente à meia-noite em um determinado dia. Quando não há meia-noite para um determinado dia, ele retorna o horário mais cedo disponível; Essa situação pode ocorrer, por exemplo, quando o Egito entra no horário de verão. Este ano, a mudança de horário entra em vigor à meia-noite de 29 de abril, portanto o relógio vai diretamente das 23:59 às 01:00.

Agora estou escrevendo testes de unidade para esta função, e um dos testes deve replicar o cenário do Egito. No Unix, eu posso fazer isso assim:

putenv("TZ", "Egypt", true);
tzset();

Depois disso, mais chamadas paralocaltime se comportam como se estivessem no Egito, e não em Minnesota, e meus testes foram aprovados. A simples definição da variável de ambiente não afeta o Windows. O que posso fazer para que o teste de unidade pense que está em outro lugar sem afetar o restante dos programas em execução no sistema?

questionAnswers(8)

yourAnswerToTheQuestion