いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

x86かx64か否かを判別する (IntPtr.Size, 4バイト, 8バイト, Windows Server 2008 R2)


最近、64ビットの環境もよく見かけるようになってきました。
やっぱり、Windows Server 2008 R2が大きいですね。


x86とx64の環境が混在しだすと、たまに自分が今どの環境で作業してるのか
分からなくなったりしてます。(x64環境が2つとx86環境が2つとかになると間違いまくりますw)


そんなとき、ちょっとした判別アプリを作成しておくと便利です。
.NETの場合は、いくつか方法があるのですが、最もさくっと判別できるのは以下のやり方。

IntPtr型のSizeの値を見る。


IntPtr型は、32ビット/64ビットの環境で型のサイズが変わります。
32ビットだと4バイト、64ビットだと8バイトになります。


この値を見れば、今の環境がどちらのなのか判別がつきます。


以下、サンプルプログラムです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace x86かx64か判定
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            lblPtrSize.Text = IntPtr.Size.ToString();
            lblResult.Text  = IntPtr.Size == 8 ? "x64" : "x86";
        }
    }
}


ついでに、上記の判定プログラムをアップしておきました。
Exe一つで動くので、個人的に、何気に重宝しています。


================================
過去の記事については、以下のページからご参照下さい。