Dalle mie indagini non c’è una classe .Net per determinare se si è su un SO a 64bit… possibile??
Girando sui vari forum ho trovato queste tre alternative (ma solo 2 mi rispondono che sono a 64 sul mio Vista x64 con sp2 appena fatto…)
Metodo 1: IntPtr
1: public static bool Is64BitSimple()
2: {
3: if (IntPtr.Size == 8)
4: return true;
5: else
6: return false;
7: }
Medoto 2: WMI
1: public static bool Is64bitWMI()
2: {
3: bool is64 = false;
4: try
5: {
6: ManagementObjectSearcher searcher;
7: searcher = new ManagementObjectSearcher("SELECT AddressWidth FROM Win32_Processor");
8: ManagementObjectCollection collection = searcher.Get();
9: foreach (ManagementObject obj in collection)
10: {
11: is64 = (UInt16)(obj["AddressWidth"]) == (UInt16)64;
12: }
13: }
14: catch (Exception ex)
15: {
16: }
17: return is64;
18: }
Metodo 3: non mi va…
1: [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
2: [return: MarshalAs(UnmanagedType.Bool)]
3: public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
4: public static bool Is64Bit()
5: {
6: bool retVal;
7: IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
8: return retVal;
9: }
Se qualcuno ha dritte faccia un fischio