2015-10-25 7 views
12

Windows 10を使用し、Windows 8からアップグレードしました=> 8.1 => 10このコードを使用すると、System.Environment.OSVersionが間違ったバージョンを返します

OperatingSystem os = System.Environment.OSVersion; 

os.Version = {} 6.2.9200.0 System.Version

私はこれが原因だったmanifested forが、私はそれが何を意味するのか理解していないバージョンであった読みます。

Webサービスにユーザーエージェント文字列を記録しているため、Windowsバージョンを正しく識別してサポートしたいので、正しいOSバージョンが必要です。正しいバージョンを正しく報告するための最も簡単な方法は何ですか?

答えて

14

アプリケーションがマニフェストを使用して互換性があると宣言しない限り、Windows 10はその文字列を返します。

<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> 

あなたは、Windows 10にWindows Vistaのために同じことを行うことができます。次の行は、コメントを解除し、その後そうapp.manifest(>アプリケーションマニフェストファイル - >追加 - - >新しい項目を右クリックし、プロジェクト)を追加することができません。すべてが同じセクションにあります。。

<application> 
    <!-- A list of the Windows versions that this application has been tested on and is 
     is designed to work with. Uncomment the appropriate elements and Windows will 
     automatically selected the most compatible environment. --> 

    <!-- Windows Vista --> 
    <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> 

    <!-- Windows 7 --> 
    <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> 

    <!-- Windows 8 --> 
    <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> 

    <!-- Windows 8.1 --> 
    <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> 

    <!-- Windows 10 --> 
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> 

</application> 

そして今、あなたのアプリケーションを実行すると、正しい10.0を報告します* 0バージョンデバッグコンパイルのために働い

+0

おかげで、私はのためにコンパイルする場合それはまだWindows 8.1のバージョンを返すリリース。 「NT 6.2」私は何を逃したのですか? – pgee70

+1

@ pgee70もう何もありません。私は私の最後に試して、リリースとデバッグの両方で動作します。それが、あなたが配備している正しいexeであることと、[アプリケーション]タブのプロジェクト設定で正しいマニフェストが含まれていることを確認してください[ここ](http://i.imgur.com/WxuZ8KW.png?1 ) – Nasreddine

関連する問題