指定されたドライブ上にあるものを見つける(例えば:窓7 Proは)ドライブDにある:D:\Windows\System32\license.rtf
Windowsのバージョンは、私がどのようなOSのバージョンを見つけたい
を掘りなしとさせて頂いておりますSystem.Management名前空間内のクラスがあります指定されたローカルドライブ文字でOSバージョンを確認しますか?
指定されたドライブ上にあるものを見つける(例えば:窓7 Proは)ドライブDにある:D:\Windows\System32\license.rtf
Windowsのバージョンは、私がどのようなOSのバージョンを見つけたい
を掘りなしとさせて頂いておりますSystem.Management名前空間内のクラスがあります指定されたローカルドライブ文字でOSバージョンを確認しますか?
//This will help you detect the version of the OS for NT based system, if ntoskrnl.exe doesnt exist its ME/95/98
var DriveLetter = "D"; //D drive.
var pathTontoskrnl = string.Format("{0}:\\{1}", DriveLetter, "\\Windows\System32\ntoskrnl.exe");
if (!File.Exists(pathTontoskrnl))
{
Console.WriteLine("Windows ME/95/98");
}
var versionInfo = FileVersionInfo.GetVersionInfo(pathTontoskrnl);
string version = versionInfo.ProductVersion;
if (version.StartsWith("5.1"))
{
Console.WriteLine("XP");
}
//4.x: NT 4.x
//5.0: Win2k
//5.1: WinXP
//5.2: Win2003 or XP-x64
//6.0: WinVista
//6.1: Win7
//6.2; Win8
//6.3: Win8.1
//6.4: Win10 ??? (not sure)
これはうまくいきますが、Windows 7 pro VS Windows 7 Home PremiumなどのOSエディションの違いを判断するのに、残念ながらバージョン番号を使用することはできません。異なるエディションを識別できる別の方法がありますか? – Simon
Windowsが「*:/ Windows /」以外のディレクトリにインストールされている場合は、これも失敗します。 –
正しいのは、pathTontoskrnlが変数ですが、Windowsのインストールディレクトリを渡す必要があるという理由に基づいています。 –
マシンのOSが問題のドライブで実行されていない場合、単純な方法はありません。 Windowsはそれ自体を認識しています。ライセンスファイルのようなインジケータを探す必要があります。ユースケースは何ですか?ドライブにOSをインストールしても、それを実行していないのはなぜですか? –
そのドライブのローカルマシンレジストリハイブをC#にロードしてから、レジストリ内のマーカーを確認することができます。 – john
license.rtfファイルに有用な情報が表示されませんか? Windowsフォルダの下にあるバイナリを入手してそのバージョン(例えば '\ Windows \ explorer.exe')を取得し、バージョンマッピングを使用することができます - > https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions – npocmaka