Wie man die OS-version in Win8.1 als GetVersion/GetVersionEx sind veraltet?
Habe ich Szenarien, in denen ich speziell kenne die OS major-minor-version und build-Nummer usw..
Von windows 8.1 ab GetVersion
und GetVersionEx
wurden abgelehnt, die besagt:
[GetVersion/GetVersionEx verändert werden können oder nicht verfügbar für Versionen nach Windows 8.1. Verwenden Sie stattdessen die Version Hilfsfunktionen]
Keiner der version Hilfs-APIs mir helfen, die OS-Versionsnummer vielmehr helfen Sie mir zu überprüfen oder um herauszufinden, ob meine version ist die gleiche, oder oben einige erwähnt-version. Was kann getan werden?
Ich habe noch nie bekannt, die Microsoft zum entfernen eine API-Funktion, auch wenn es veraltet ist, also ich würde sagen, halten Sie es, wenn Sie wollen. Just bewusst sein, dass in späteren Versionen von Windows liegts an der version-Nummer, es sei denn, Ihr manifest gibt die Kompatibilität mit der aktuellen version.
Es gibt die WMI - Klasse Win32_OperatingSystem ab
Was @Alex sagt, das ist gut. Sie können Lesen Sie immer die version der Ressource aus kernel32.
Was ist dein Szenario hier genau? Auch finden Sie unter this stack-overflow-thread.
Ich denke, du solltest es als eine Antwort auf diese Frage, weil keiner von den Antworten waren das sprechen über die WMI-Abfrage
Es gibt die WMI - Klasse Win32_OperatingSystem ab
Was @Alex sagt, das ist gut. Sie können Lesen Sie immer die version der Ressource aus kernel32.
Was ist dein Szenario hier genau? Auch finden Sie unter this stack-overflow-thread.
Ich denke, du solltest es als eine Antwort auf diese Frage, weil keiner von den Antworten waren das sprechen über die WMI-Abfrage
InformationsquelleAutor Abhishek Jain | 2014-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
API GetVersionEx() weiter zu arbeiten in Windows 8.1+, jedoch hat Microsoft verändert seine Funktionalität. Von der MSDN-Website (Hervorhebung von mir):
Was Sie tun müssen, ist fügen Sie die richtige GUID(s) an Ihre Anwendung.exe/.dll) - Binärdateien (per manifest-XML-Daten). In anderen Worten, , wenn Sie ausdrücklich von Ihrer Anwendung unterstützt 8.1, GetVersionEx() wieder die richtigen Informationen bei der Ausführung unter Windows 8.1. Wenn Sie dies nicht tun, GetVersionEx() wird an dir liegen.
Sehen Erreichen Sie Ihre Anwendung Für Windows 8.1 für eine Liste von GUIDs.
Auch hier behandelt und hier.
GUID-Liste für die Faulen
{e2011457-1546-43c5-a5fe-008deee3d3f0}
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
{1f676c76-80e1-4239-95bb-83d0f6d0da78}
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}
Als für Windows Server 2019, ich bin nicht sicher, dass eine neue GUID wurde veröffentlicht. Bitte Kommentar, wenn Sie mehr wissen!
Sie können fügen Sie einfach ein in Ihre Projekte Einstellungen. Siehe zum Beispiel hier: msdn.microsoft.com/en-us/library/ms235229%28v=vs.110%29.aspx
Bedenken Sie, dass, wenn Sie ständig aktualisieren Sie Ihre Anwendung, schließlich wird Ihr manifest wird, nicht die 'neueste' version von Windows und Sie erhalten eine version liegen.
Beachten Sie auch, dass, es sei denn, Sie aktualisieren und testen von Ihrer Anwendung auf die neuesten Versionen, kann es sehr wahrscheinlich brechen. Case in point: GetVersionEx() aufhört zu funktionieren, wie erwartet. Dies ist WAD.
Um zum Ziel Windows 8.1, müssen Sie entweder die app-manifest oder gehören _NT_TARGET_VERSION=$ (_NT_TARGET_VERSION_LATEST) in der Quell-Datei. Frage ist wo gehören _NT_TARGET_VERSION? die Quell-Datei?
InformationsquelleAutor NuSkooler
Gibt es eine neue Funktion namens GetProductInfo zurückgibt version infos.
Wenn Sie testen möchten, für eine spezifische version, die Sie verwenden sollten, auch VerifyVersionInfo
Es ist einfach eine Struktur erstellen, um zu überprüfen, ob eine bestimmte OS-version ausgeführt wird. VerifyVersionInfo braucht, um version-Strukturen und können Sie leicht überprüfen, für VER_GREATER_EQUAL und VER_LESS_EQUAL
Beachten Sie auch, dass GetVersionEx liegen nicht auf einem Windows 8.1-system, wenn Sie definieren das richtige Betriebssystem Eintrag im Abschnitt "Kompatibilität" für Ihr manifest. Aber es liegt vielleicht in einer zukünftigen OS-version!
Sehen Erreichen Sie Ihre Anwendung Für Windows 8.1 für eine Liste von GUIDs. Auch bedeckt hier.
GUID-Liste für das Anwendungsmanifest
{e2011457-1546-43c5-a5fe-008deee3d3f0}
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
{1f676c76-80e1-4239-95bb-83d0f6d0da78}
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}
Sie können die service pack-major-Nummer mit VerifyVersionInfo. Ich kenne keine situation, wo ein OS-build-Nummer innerhalb einer SP unterscheidet sich...
GetProductInfo()
nicht zurück, wird der OS-version. Übergeben Sie es in eine gewünschte OS version, und es gibt das Produkttyp des OS (business, enterprise, datacenter, etc.). Das wird auch deutlich in der Dokumentation: "Ruft den Produkt-Typ, die für das Betriebssystem auf dem lokalen computer, und ordnet die Art der Produkt-Typen unterstützt, die von den angegebenen Betriebssystem."InformationsquelleAutor xMRi
Überprüfen dieser Artikel auf codeproject.com, Es funktioniert perfekt für Windows 8 :
1) Download .DLL und fügen Sie es zu Ihrem Projekt .
2) diesen code Verwenden, um Operation System Informationen :
InformationsquelleAutor Abdallah Shakhatreh