De acordo com fontes da classe Environment (pode ser encontrado aqui , linha 864), depois de definir variável de ambiente de escopo user / machine, ele chama a função SendMessageTimeout nativa para notificar qualquer processo sobre alterações no meio ambiente. Aqui está um trecho:
IntPtr r = Win32Native.SendMessageTimeout(
new IntPtr(Win32Native.HWND_BROADCAST),
Win32Native.WM_SETTINGCHANGE,
IntPtr.Zero,
"Environment",
0,
1000,
IntPtr.Zero);
Portanto, o tempo limite de 1000 milissegundos (1 segundo) é dado a qualquer destinatário para processar a mensagem. Por exemplo. Se 5 deles não conseguir processá-lo, você poderá ter um atraso de até 5 segundos. Mais sobre SendMessageTimeout pode ser encontrado em MSDN .
Espero que ajude.