title: How does a .NET process get the culture information?
body: <p>I have a Windows service running (C#, <a href="http://en.wikipedia.org/wiki/.NET_Framework" rel="nofollow noreferrer">.NET</a> 2.0) on Windows Server 2003 R2. In one server the <code>System.Threading.Thread.CurrentThread.CurrentCulture</code> is {en-AU} and in the other {en-US}.
  This has caused a difference when calling ToString() on a <a href="http://msdn.microsoft.com/en-us/library/system.datetime.aspx" rel="nofollow noreferrer">DateTime</a> object. I want the culture to be {en-AU}.</p>
  
  <p>I checked the "Regional and Language Setting". In both servers, the "Regional Options" tab shows "English (Asutralia)". But in the "Advanced" tab it shows "English (United States)" for one and "English (Australia)" for the other. So this must be causing the difference. Although I want to know why exactly the "Advanced" tab says "the language version of the non-unicode programs you want to use", I thought .NET processes were Unicode and should not be affected by this.</p>
  
  <p>How does the .NET runtime determine the culture to use? Any detailed reference would be helpful.</p>