はじめに
この記事は、Windows PCにインストールされているMicrosoft Officeが32bit版なのか64bit版なのかを、GUIを開かずにコマンドだけで瞬時に調べたいと考えている方向けです。
社内の社員PCや、クライアントからの問い合わせで「Officeのbit数を教えてほしい」という依頼が急に入ることはありませんか?
GUIで確認するには「ファイル」→「アカウント」→「バージョン情報」と複数クリックが必要です。本記事を読めば、PowerShellを1行叩くだけで判定できるスクリプトを手に入れられます。
また、レジストリの読み取り方法や、32bit/64bitの違いがアドイン互換性に与える影響についても解説します。
前提知識
- PowerShellの基本的なコマンドが打てること(コピペ可)
- Windowsレジストリの存在を知っていること
- Officeがインストール済みであること
レジストリを読むだけで高速判定できる理由
Office 2013以降、製品のbit情報はレジストリの固定位置に格納されるようになりました。
GUIで確認する手順は以下の通りで、少なくとも5クリック+スクロールが必要です。
- 任意のOfficeアプリを起動
- 「ファイル」→「アカウント」
- 「バージョン情報」右横の小さな文字を読む
- 「32ビット」または「64ビット」を目視で判別
これをレジストリ経由で取得すれば、1秒未満で判定できます。レジストリの値は次の場所に格納されています。
- 32bit版Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration - 64bit版Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration
(Wow6432Node経由ではありません)
値名はPlatformで、値データがx86なら32bit版、x64なら64bit版です。
PowerShell一発スクリプトと応用例
以下のスクリプトを管理者権限で実行すれば、bit情報が即座に出力されます。
ステップ1:最小構成のスクリプト
Powershell(Get-ItemProperty ` -Path 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' ` -Name Platform -ErrorAction SilentlyContinue).Platform
実行結果例
x86 → 32bit版
x64 → 64bit版
(何も出力されない場合はOfficeが存在しない、または旧バージョン)
ステップ2:旧バージョン(2010以前)にも対応
2010以前の永続化ライセンス版はレジストリの場所が異なります。下記のように複数のキーを走査すると確実です。
Powershell$keys = @( 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration', 'HKLM:\SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot', 'HKLM:\SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot' ) foreach ($key in $keys) { $val = Get-ItemProperty -Path $key -Name Platform -EA 0 if ($val) { $val.Platform; break } }
ステップ3:リモートPCを一括調査
社内の数百台を一気に調べたい場合は、CIMセッションを使います。
Powershell$pcList = @('PC01', 'PC02', 'PC03') Invoke-Command -ComputerName $pcList -ScriptBlock { (Get-ItemProperty ` -Path 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' ` -Name Platform -ErrorAction SilentlyContinue).Platform } | Select-Object PSComputerName, @{N='Bit';E={$_}}
ハマった点:「Platform」が存在しない場合
Office 365 バージョン2108以降、一部のチャネルでは値が格納されないケースがありました。
その場合は、InstallPathのフォルダ名を読み取る代替手段があります。
解決策:フォルダ名で判定
Powershell$installPath = (Get-ItemProperty ` -Path 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' ` -Name InstallPath -ErrorAction SilentlyContinue).InstallPath if ($installPath -match 'x86') { 'x86' } else { 'x64' }
まとめ
本記事では、レジストリとPowerShellを活用してインストール済みOfficeのbit情報を高速に取得する方法を解説しました。
- レジストリの
Platform値を読むだけで1秒で判定できる - 旧バージョンやリモートPCにも同じロジックを応用できる
- レジストリに値が存在しないケースでは
InstallPathのフォルダ名で代替判定する
このスクリプトをツールボックスに加えることで、問い合わせ対応時間を大幅に削減できます。
次回は、「bit数違いでアドインが読み込まれないトラブルを自動修復する」スクリプトを紹介します。
参考資料
