5

Here's my question. What is the best way to determine what bit architecture your app is running on?

What I am looking to do: On a 64 bit server I want my app to read 64 bit datasources (stored in reg key Software\Wow6432Node\ODBC\ODBC.INI\ODBC Data Sources) and if its 32 bit I want to read 32 bit datasources, (i.e. Read from Software\ODBC\ODBC.INI\ODBC Data Sources).

I might be missing the point, but I don't want to care what mode my app is running in. I simply want to know if the OS is 32 or 64 bit.

[System.Environment.OSVersion.Platform doesn't seem to be cutting it for me. Its returning Win32NT on my local xp machine and on a win2k8 64 bit server (even when all my projects are set to target 'any cpu')]

Brooks Moses
  • 9,267
  • 2
  • 33
  • 57
user48408
  • 3,234
  • 11
  • 39
  • 59
  • Duplicate of http://stackoverflow.com/questions/266082/how-do-i-tell-if-my-application-is-running-as-a-32-or-64-bit-application – Redwood May 19 '10 at 16:28

5 Answers5

4

You shouldn't even worry about this, normally. The system automatically redirects registry queries to Software\Wow6432Node when running a 32-bit app on a 64-bit platform.

JSBձոգչ
  • 40,684
  • 18
  • 101
  • 169
  • 1
    To make your app run as 32-bit regardless of the platform, change the exe platform to "x86 only". It will still run on x64 platforms and be automatically redirected to the Wow6432Node keys. – Stephen Cleary May 19 '10 at 15:22
4

Try the property Environment.Is64BitOperatingSystem. This is a new one added in .Net 4.0 specifically for the purpose of checking the type of the operating system.

JaredPar
  • 733,204
  • 149
  • 1,241
  • 1,454
4

Simple, safe, framework version agnostic solution without going to the registry:

Console.WriteLine(
    "Is 64-bit? {0}",
    (
        System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == sizeof(Int64)
            ? "Yes" 
            : "No"
    )
);
Nathan Ernst
  • 4,540
  • 25
  • 38
2

You should not read Wow6432Node directly. Use RegistryView to specify a 32-bit view when running as a 64-bit app.

Stephen Cleary
  • 437,863
  • 77
  • 675
  • 810
1

How to detect Windows 64 bit platform with .net? might be helpful.

Community
  • 1
  • 1
Regent
  • 5,502
  • 3
  • 33
  • 59