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のアップデートがあるたびに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を使うのがよさそうだ。
前へ12次へ
ASCII倶楽部とは