2016-12-29 6 views
1

指定されたドライブ上にあるものを見つける(例えば:窓7 Proは)ドライブDにある:D:\Windows\System32\license.rtfWindowsのバージョンは、私がどのようなOSのバージョンを見つけたい

を掘りなしとさせて頂いておりますSystem.Management名前空間内のクラスがあります指定されたローカルドライブ文字でOSバージョンを確認しますか?

+4

マシンのOSが問題のドライブで実行されていない場合、単純な方法はありません。 Windowsはそれ自体を認識しています。ライセンスファイルのようなインジケータを探す必要があります。ユースケースは何ですか?ドライブにOSをインストールしても、それを実行していないのはなぜですか? –

+2

そのドライブのローカルマシンレジストリハイブをC#にロードしてから、レジストリ内のマーカーを確認することができます。 – john

+0

license.rtfファイルに有用な情報が表示されませんか? Windowsフォルダの下にあるバイナリを入手してそのバージョン(例えば '\ Windows \ explorer.exe')を取得し、バージョンマッピングを使用することができます - > https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions – npocmaka

答えて

1
//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) 
+0

これはうまくいきますが、Windows 7 pro VS Windows 7 Home PremiumなどのOSエディションの違いを判断するのに、残念ながらバージョン番号を使用することはできません。異なるエディションを識別できる別の方法がありますか? – Simon

+0

Windowsが「*:/ Windows /」以外のディレクトリにインストールされている場合は、これも失敗します。 –

+0

正しいのは、pathTontoskrnlが変数ですが、Windowsのインストールディレクトリを渡す必要があるという理由に基づいています。 –

関連する問題