このページの本文へ

前へ 1 2 次へ

Windows Info 第298回

Windows上から今動いているのがWindows 11なのか10なのかを確認したが、答えはバラバラ

2021年10月24日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

Androidアプリ実行環境のプレビューや
品質アップデートでの問題修正とWindows 11の話題が続く

 Windows 11でのAndroidアプリ実行環境のプレビューや品質アップデート、さらには、Windows 10 Ver.21H2のリリースなど、Windows関連でニュースがたて込んでいる。もっともWindows 11のリリース直後でもあり、いろいろと話題になるタイミングなのだろう。

 さて、Windows 11のAndroidアプリの実行環境だが、現在のところ米国内のみでのプレビューで、AmazonのアプリストアがIPアドレスで地域をチェックしているらしく、Amazon.comのアカウントを入れただけでは拒否された。というわけで、今回はアクセスできなかった画面で許していただきたい。

Windows 11のベータ版でAndroidアプリを試そうと思ったが、肝心のAmazon appstoreが日本国内では動作しないようだ

 また、22日(現地時間)になって、Windows 10 Ver.21H2が完成と発表され、ブログ記事には19044.1288が完成版という話で、ISOイメージも公開された。

 筆者のマシンの1台にもWindows Updateで通知が来たので、アップデートしてみたら、インストールされたのはビルド19044.1319だった。しかもこのビルド、10月19日に配信が開始されている。番号が大きい方が新しいとすれば、最新版は、ビルド19044.1319のはず。なのにブログ記事の19044.1288ってどういうことなのか? しかも、Windows 10 Ver.2004~21H1には、それぞれ19041.1288、19042.1288、19043.1288が10月12日に配付されている(https://docs.microsoft.com/ja-jp/windows/release-health/release-information)。

 とりあえず、Windows Insider ProgramのBeta Channelに加入しているなら、ISOは入れないで、Windows Update経由でアップデートしたほうがいいかもしれない。時間かけてISOイメージをダウンロードして損した気分である。

今動いているのはWindows 10なのか11なのか?

 WindowsのアップデートがあるたびにWindowsのバージョンや名称を調べる方法を検証している。筆者は複数のマシンを持っており、それぞれバージョンが違うし、エディションも違う。バージョンアップの検証をするのに対象のマシンを間違えてはマズい。しかし、Windowsのバージョンを調べる方法は、段々面倒になってきている。というのも、ソフトウェアの互換性が高まり、バージョン番号では互換性の判断をしにくくなってきたことがある。

 Windowsが自分のバージョンをAPI経由で通知できるようにしている大きな理由の1つは、アプリケーションがWindowsに必要な機能があるかどうかを判断できるようにするためだ。しかし、逆にバージョンチェックがアダになって、アップデートのあとにアプリケーションが動かなくなることがあった。このため、昔のWindowsにはMS-DOSアプリにウソのバージョン番号を教えるためのsetverコマンドまで用意された。

 またWindows 95からは、ユーザーに見えるWindowsの名称とOSのバージョンが別になった。しかも当時は32bitアプリケーションが動作する環境にはNT系と95系の2つがあり、「Windowsのバージョン」は混乱し始めた。アプリケーションがWindowsの機能を使うために呼び出すAPI(Application Programming Interface)というレベルでは、さらなる混乱があった。たとえば、動画を再生する機能はWindowsのバージョンだけでなく、インストールされているWindows Media Playerのバージョンに依存していた。

 というわけで、MicrosoftはWindows 8でバージョンチェックを大きく変更した。これまでのバージョン番号を得るAPIを非推奨として、「バージョンヘルパー」というAPIを用意した。これは、Windowsのリリース(Windows XPとかWindows 7とか)よりも後のバージョンなのかどうかを判定するものだ。

 これを使えば、XPやVistaには対応せず、Windows 7/8用に作ったというアプリは判定が容易になり、かつ、その後登場したWindows 10でもバージョンを間違えることがない。そして、従来のバージョン番号を得るためのAPIは、開発時に指定する対応バージョンによって、適当なバージョンを返すようになった。

 たとえば、Windows 8対応として開発されコンパイルされたアプリケーションがバージョン番号を得ようとすると、Windows 10で動いていてもWindows 8のバージョン番号(Ver.6.2)を教えるようになった。こうすることで、Version~6.2という形でしかバージョンをチェックしていないアプリケーションもWindows 10で動くようになる(もしVersionが10だとしたらVersion=6.2は成立しない)。

 しかし、アプリケーション開発者ではなく、システム管理者的な視点でのバージョンチェックとは、「どのバージョンのWindowsがマシンにインストールされているのか?」という点なのであり、だからちゃんと「Windows 11」と報告してほしい。

 さて、Windowsのバージョンをチェックする方法はいくつかある。まず、GUIで見るなら、WinVer.exeとシステム情報(MSinfo32.exe)がある。

Windowsの定番バージョン表示アプリであるWinVer.exe。これはちゃんとWindows 11だと報告してくれる

 また、C:\Windows\System32\ntoskrnl.exeのプロパティを見るという方法もある。

ntoskrnl.exeは、Windowsのカーネルに相当するものだが、そのプロパティを見ると10.0.22000.282とバージョンを報告する

 これらからわかるのは、大きく2つのバージョン表記方法がある点だ。1つは、WinVer.exeのように製品名とバージョン、ビルド番号などを併記するもの。もう1つは、単にビルド番号含むバージョン番号だけを表示するものだ。

 これを見ると、Windows 11のバージョンは、「Ver.21H2 OSビルド2200.282」または「10.0.22000.282」となっている。Windows 11と言っておきながら、バージョン番号の先頭は、Windows 10と同じなのだ。いやはや。

 Windows 10 Ver.21H2では、「Ver.21H2 OSビルド 19044.1319」あるいは、「10.0.19041.1319」となる。こちらも番号表記だと、先頭は「10」になっている。後半のビルド番号に相当する部分がWindows 11とは異なるため、区別はつくのだが、バージョン番号の意味からすると、Windows 11とWindows 10にはほとんど「差」がないことになる。

 Windows 10は、Ver.2004(ビルド番号は19041)から内部的なバージョンは19041のままで、19042~19043はたぶん区別のために付けた番号なので、ベースとなったビルドは同一のまま「19041」なのだと思われる。

 では、コマンドラインでのバージョン表示はどうだろうか? コマンドラインから可能なバージョン表示には6つの方法がある。

方法 PowerShellでのコマンドライン
PowerShellコマンドレット (Get-ComputerInfo).WindowsProductName
レジストリ reg.exe query "HKLM\Software\Microsoft\windows NT\Currentversion" /v ProductName
CIM Get-CimInstance Win32_OperatingSystem | select caption
Win32コマンド systeminfo | select-string "OS 名"
.NET Frameworkクラス [System.Environment]::OSversion
cmd.exe内部コマンド cmd.exe /c ver

 このうち、「Get-ComputerInfo」「レジストリ」は、名称として「Windows 10」を報告した。

コマンドラインで6つの方法でWindows 11のバージョンを調べて見た。Windows 10と報告するものもあれば、正しくWindows 11と報告するものがある

 これに対してCIMクラス「Win32_OperationgSystem」「systeminfo.exe」コマンドは、Windows 11を報告する。cmd.exeのVERコマンド、.NET Frameworkの「System.Environment.OSVersion」は、「10.0.22000」というバージョン番号を報告し、Windows 10なのか11なのかは報告しない。

 これだけを見ると、マシンがWindows 10なのか11なのかは「賛否両論」という感じである。 もっともこれは、Windows 10からアップグレードした場合なので、もしかして、Windows 11のプリインストールマシンなら違った結果になったかもしれない(はい、まだ買ってません)。

 現状、GUIで確認するならWinVer.exeだが、ネットワーク経由で、他のマシンに接続して、コマンドラインで作業中にバージョンを確認したいときにはSysteminfo.exeを使い、リモートから確認したい場合には、CIMのWin32_OperationgSystemを使うのがよさそうだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン