Windows-Version in c # [doppelt]

8

Ich möchte wissen, welche Windows-Version der PC in C # Framework 3.5 hat.

Ich habe versucht,

zu verwenden
  

Betriebssystem os = Environment.OSVersion;

     

Version ver = os.Version;

Aber das Ergebnis ist

  

Platform: WIN32NT

     

Version 6.2.9200

     

Version untergeordnete: 2

     

Version Major: 6

Das Problem ist, dass ich "Windows 8 Pro" habe ...

Wie kann ich es erkennen?

Danke

    
Diego 12.02.2014, 19:42
quelle

4 Antworten

12

Sie müssen die Versionsnummern selbst mit dem entsprechenden Zeichenfolgenwert abgleichen.

Hier ist eine Liste des letzten Windows-Betriebssystems und ihrer entsprechenden Versionsnummer:

  • Technische Vorschau für Windows Server 2016 - 10.0 *
  • Windows 10 - 10.0 *
  • Windows 8.1 - 6.3 *
  • Windows Server 2012 R2 - 6.3 *
  • Windows 8 - 6.2
  • Windows Server 2012 - 6.2
  • Windows 7 - 6.1
  • Windows Server 2008 R2 - 6.1
  • Windows Server 2008 - 6.0
  • Windows Vista - 6.0
  • Windows Server 2003 R2 - 5.2
  • Windows Server 2003 - 5.2
  • Windows XP 64-Bit-Version - 5.2
  • Windows XP - 5.1
  • Windows 2000 - 5.0

* Für Anwendungen, die für Windows 8.1 oder 10 manifestiert wurden. Anwendungen, die nicht für 8.1 / 10 manifestiert sind, geben den Windows 8-Betriebssystemversionswert (6.2) zurück.

Hier ist die Quelle .

Auch von derselben Quelle:

  

Die Identifizierung des aktuellen Betriebssystems ist normalerweise nicht der beste Weg   um zu bestimmen, ob ein bestimmtes Betriebssystemmerkmal vorhanden ist.   Dies liegt daran, dass dem Betriebssystem möglicherweise neue Funktionen hinzugefügt wurden   in einer weitervertreibbaren DLL. Anstatt den Version-API-Helper zu verwenden   Funktionen zur Ermittlung der Betriebssystemplattform oder -version   Nummer, testen Sie auf das Vorhandensein des Features selbst.

    
Crono 12.02.2014 19:45
quelle
5

In meinem Szenario brauchte ich meine Anwendung, um Computerinformationen für mögliche Fehlerberichte und Statistiken zu erfassen.

Ich habe keine Lösungen gefunden, bei denen ein Anwendungsmanifest hinzugefügt werden musste. Die meisten Vorschläge, die ich beim googlen gefunden habe, haben das leider nur angedeutet.

Tatsache ist, dass bei Verwendung eines Manifests jede Betriebssystemversion manuell hinzugefügt werden muss, damit diese bestimmte Betriebssystemversion sich zur Laufzeit selbst melden kann.

Mit anderen Worten, dies wird zu einer Race-Bedingung: Ein Benutzer meiner App kann sehr gut eine Version meiner App verwenden, die das verwendete Betriebssystem voraussetzt . Ich müsste die App sofort aktualisieren, wenn eine neue Betriebssystemversion von Microsoft gestartet wurde. Ich müsste die Benutzer auch zwingen, die App gleichzeitig mit der Aktualisierung des Betriebssystems zu aktualisieren.

Mit anderen Worten, nicht sehr machbar .

Nachdem ich die Optionen durchgeblättert hatte, fand ich einige Verweise (überraschend wenige im Vergleich zum App-Manifest), die stattdessen die Verwendung von Registry-Lookups vorschlugen.

Meine (abgehackte) Klasse ComputerInfo mit den Eigenschaften WinMajorVersion , WinMinorVersion und IsServer sieht folgendermaßen aus:

%Vor%     
Spiralis 09.06.2016 03:25
quelle
2

Ich habe das OsInfo nugget veröffentlicht, um Windows-Versionen einfach zu vergleichen.

%Vor%     
angularsen 22.01.2015 17:54
quelle
2

Versuchen Sie Folgendes:

%Vor%

Quelle: Ссылка

    
Mangesh 23.03.2016 05:26
quelle