title: How to get IANA timezone in C# without conversion
body: <p>When you run .net on windows machines, it pulls the timezone info from the Windows registry and thus uses Windows timezone ids rather than IANA. You can convert between them, but consider the following code:</p>
  <pre class="lang-cs prettyprint-override"><code>TimeZoneInfo.TryConvertIanaIdToWindowsId(&quot;Canada/Eastern&quot;, out string temp2);
  TimeZoneInfo.TryConvertWindowsIdToIanaId(temp2, out string temp3);
  Debug.WriteLine(temp2 ?? &quot;NULL&quot;); //Eastern Standard Time
  Debug.WriteLine(temp3 ?? &quot;NULL&quot;); //America/New_York
  </code></pre>
  <p>Converting from Windows timezones to IANA timezones is not two way. There seems to be a canonical timezone that windows' cluster timezones get changed to (in this case New York).</p>
  <p>This isn't a problem on non-windows machines since they all use IANA but, for windows, I cannot get the true IANA timezone of the user. Is there anyway around this?</p>
  <p>How does windows even get away with doing this if the timezones it groups together (like 'America/New_York' and 'Canada/Eastern' into 'Eastern Standard Time') may eventually (or already) have different historical daylight savings rules and whatnot? That said, even if they were the same in all but name, I'd like to get the proper IANA timezone of the machine somehow.</p>