Betriebssystem ermittlen (1.90.355)

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Betriebssystem ermittlen (1.90.355)

Beitrag von peternmb »

Hallo,

kann ich igendwie das das aktuelle Betriebssystem ermittlen?
Bis Windows 8.1 ging es ja noch, nur unter Windows 10 wird mir das gleiche angezeigt wie unter Windows 8.1 (Vista 06.02 Build 09200).
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von Jan »

Wenn ich das richtig verstanden habe dann geht das erst mit der 2.0. Es mag da aber Tricks geben, mit denen man das auch schon mit früheren Versionen schaffen kann.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von peternmb »

naja, der "Trick" war bisher

Vista 06.01 = Win7
Vista 06.02 = Win8

aber mit Windows 10 funktioniert das anscheinend nicht mehr.
Ich hatte gehofft, dass es dann "Vista 06.03" ist es kommt aber wie bei Win8 "Vista 06.02".
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

Jan hat geschrieben:Wenn ich das richtig verstanden habe dann geht das erst mit der 2.0.
falsch !
Jan hat geschrieben:Es mag da aber Tricks geben, mit denen man das auch schon mit früheren Versionen schaffen kann.
es ist kein Trick sondern das Verständnis was eine Manifest Datei macht.
In Windows 8.1 and Windows 10, the GetVersion and GetVersionEx APIs have been deprecated and superseded by the Version Helper APIs. While you can still call the deprecated APIs, if your application does not specifically target Windows 8.1 or Windows 10, you will get Windows 8 version (6.2.0.0).
binde mal diese *.RES ein ( für 1.9.355 )
OSVER.ZIP
Windows 10 Manifest für v1.9.355
(1.28 KiB) 277-mal heruntergeladen

Code: Alles auswählen

#include "os.ch"

PROC MAIN
   ? OnOSVersion()
   WAIT
RETURN

FUNCTION OnOSVersion()
RETURN VAL( OS(OS_VERSION) )
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

im Windows 10 Taskmanager kann man zusätzliche Column auswählen wenn man mit der rechten Maustaste in den Header clicktwenn man die Spalte "Betriebssystemkontext" auswählt wird man einige Programme sehen die mit Windows Vista/7/8/8.1 gekennzeichnet sind. das was "frei" ist wurde in der beta Version noch als Windows 10 angezeigt.
Win10_Manifest.jpg
Win10_Manifest.jpg (205.16 KiB) 10392 mal betrachtet
ich habe nun das Sample MDIDEMO.EXE und mein OsVER.EXE laufen lassen und man sieht das MDIDEMO.EXE als Vista eingestuft wird [-X
nun wissen wir ja das die Manifest Datei für visual Style zuständig ist ...
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von Jan »

AUGE_OHR hat geschrieben:
Jan hat geschrieben:Wenn ich das richtig verstanden habe dann geht das erst mit der 2.0.
falsch !
Jan hat geschrieben:Es mag da aber Tricks geben, mit denen man das auch schon mit früheren Versionen schaffen kann.
es ist kein Trick sondern das Verständnis was eine Manifest Datei macht.
Jimmy,

Dein laut in den Raum gerufenens "falsch!" ist falsch. Mit der 1.9.355 kann man NICHT die Version von Windows 10 feststellen. Zumindest nicht mit dem dafür explizit vorgesehenen Bordmittel Os(). Ich hatte ja explizit nicht ausgeschlossen, das es Tricks geben mag, das jenseits dieser eigentlich dafür vorgesehenen Funktion festzustellen. Du hattest einen genannt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

ein Manifest File ist ein MUSS und hat nichts mit mit der Function OS() zu tun die wohl auf GetVersion / GetVersionEx API beruht.
es könnte auch sein das Alaska in der v2.x die neue Helper API schon eingebaut hat und damit OS() funktioniert.

aber ein Manifest File macht noch viel mehr ( und das Problem behebt es auch )

inzwischen kennen wir auch den Eintrag <dpiAware>true</dpiAware> und mit Windows 10 fallen viel "alte Versionen" langsam aber sicher über Bord.
deshalb werden unter "Betriebssystemkontext" nun "alte" Versionen angezeigt die mit "neue" Sachen evtl. nicht klarkommen ( so eine Art Kompatibilitäts-Modus ).

wenn man der Xbase++ ein "normales" Manifest gibt wird dem OS() nicht mitgeteilt das es die neuen Funktionen nutzen kann.

Frage : was zeigt denn eine v2.x Applikation mit Manifest im Taskmanager unter "Betriebssystemkontext" an ?

p.s. klar könnte ich nun mitteilen um welche Einträge es sich handelt ...
würde aber in meinen Vortrag passen ... also kommt zum User-Treffen ;)
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von peternmb »

binde mal diese *.RES ein ( für 1.9.355 )
Dumme Frage: ich habe bereits eine Resourcen-Datei definiert, wie kann ich eine zweite einbinden? :banghead:
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von Tom »

Diese Ressource enthält ein eingebundenes Manifest, um das es wohl geht. Darin legt man - wenn man will - fest, für welche spezielle Betriebssystemversion die Software ausgelegt ist. Dabei handelt es sich um das Segment "supportedOS", das mit einer ID versehen wird, die die von der Applikation (!) unterstützte Windows-Version spezifiziert. Diese Information wird u.a. im Task-Manager angezeigt und kann intern auch abgerufen werden. Sie sagt aber nichts darüber aus, welches Betriebssystem konkret läuft. Gut möglich jedoch, dass sie verhindert, dass beispielsweise eine für 8.1 spezifizierte Applikation unter Windows 7 läuft.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von Tom »

Noch eine Ergänzung: Um mit 1.9 SL1 die richtige Betriebssystemversion zu ermitteln, muss man die neue "Version Helper API" verwenden, die es ab/für Windows 8 im SDK gibt:

https://msdn.microsoft.com/de-de/librar ... 85%29.aspx

Damit findet eine inkrementelle Abfrage statt; man arbeitet sich also quasi von XP nach oben vor - oder umgekehrt.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

peternmb hat geschrieben:Dumme Frage: ich habe bereits eine Resourcen-Datei definiert, wie kann ich eine zweite einbinden? :banghead:
sorry ... die *.RES Datei ist für das Demo bestimmt und sollte zeige wie sich die Xbase++ EXE mit/ohne Manifest unter Windows 7/8/8.1/10 verhält.

Tom hat ja schon angedeutet das es sich um die ""supportedOS"" handelt die man im Manifest eintragen "sollte" um dem OS() mitzuteilen das die Applikation Windows 7/8/8.1/10 unterstützt ... ob Xbase++ tatsächlich die Möglichkeiten (z.b. visual Style) dann nutzt ist eine andere Sache.

wenn man die Einträge im Manifest nicht hat fährt man praktisch im Vista "Kompatibilitäts-Modus".
gruss by OHR
Jimmy
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von peternmb »

sorry ... die *.RES Datei ist für das Demo bestimmt und sollte zeige wie sich die Xbase++ EXE mit/ohne Manifest unter Windows 7/8/8.1/10 verhält.
Danke, wenn ich das nur für eine Demo verwenden kann dann nützt mir diese Datei nicht wirklich etwas.
Ich benötige eine Funktion, die ich in meine Programme einbinden kann um mir das verwendetet Bdetriebssystem anzeigen zu lassen.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

hier von Pablo eine Demo ( Source) welche auf die OSVERSIONINFOEX *** Structure zugreift die auch GetVersionEx und VerifyVersionInfo nutzen.
*** https://msdn.microsoft.com/de-de/librar ... 85%29.aspx

nun teste es mal mit/ohne das OSVER.RES was bei Windows > 8.0 raus kommt.

Bitte an Xbase++ v2.x User die Version von Pablo "pure" laufen lassen was da raus kommt.
Dateianhänge
OsVersionInfoEx.zip
need ot4xb
(1.49 KiB) 251-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

peternmb hat geschrieben:Danke, wenn ich das nur für eine Demo verwenden kann dann nützt mir diese Datei nicht wirklich etwas.
Ich benötige eine Funktion, die ich in meine Programme einbinden kann um mir das verwendetet Bdetriebssystem anzeigen zu lassen.
ich möchte die Lösung (noch) nicht im Forum präsentieren da ich es für meinen Vortrag zum Usertreffen nutzen möchte ... also kommt zum Usertreffen ;)
gruss by OHR
Jimmy
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 996
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von HaPe »

Hallo Zusammen !

Hier gibts eine Beschreibung wie man das OS unter VFP bestimmt.
Das sollte einfach umzusetzen sein:
http://news2news.com/vfp/index.php?example=23

In meinen Programmen (mit VFP) bestimme ich die Betriebssystem-Version durch auslesen aus der Registry und lese aus:
- CurrentVersion
- CurrentBuild
- ProductName
Schlüssel
#DEFINE KEY_NTCURRENTVERSION "Software\Microsoft\Windows NT\CurrentVersion"

Damit erhalte ich zb. unter 8.1 64-Bit:
Windows-Version: 6.3 (Build 9600)
Windows-Name: Windows 8.1 Enterprise - 64 Bit
Unter 10.0 - 64 Bit:
Windows-Version: 6.3 (Build 10240)
Windows-Name: Windows 10 Enterprise N 2015 LTSB - 64 Bit
--
Hans-Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

hi,
HaPe hat geschrieben:Hier gibts eine Beschreibung wie man das OS unter VFP bestimmt.

Damit erhalte ich zb. unter 8.1 64-Bit:
Windows-Version: 6.3 (Build 9600)
Windows-Name: Windows 8.1 Enterprise - 64 Bit
Unter 10.0 - 64 Bit:
Windows-Version: 6.3 (Build 10240)
Windows-Name: Windows 10 Enterprise N 2015 LTSB - 64 Bit
wenn er dir bei Windows 8.1 "6.3" anzeigt und auch unter Windows 10 auch "6.3" dann hat VFP das selbe Problem.

die Structure OSVERSIONINFOEX "müsste" ja die richtige Version ausgeben aber auch die "versagt" unter Windows 10 ohne entsprechendes Manifest.
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von Wolfgang Ciriack »

Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8). :)
Viele Grüße
Wolfgang
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 996
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von HaPe »

Hallo Zusammen !
wenn er dir bei Windows 8.1 "6.3" anzeigt und auch unter Windows 10 auch "6.3" dann hat VFP das selbe Problem.
Welches Problem?

Um es zu verdeutlichen:
Ich nutze die Funktion GetVersionEx in meiner Funktion nur zur Bestimmung der SP-Version.
- CurrentVersion
- CurrentBuild
- ProductName
Schlüssel
#DEFINE KEY_NTCURRENTVERSION "Software\Microsoft\Windows NT\CurrentVersion"
Die obene genannten Infos lese ich aus der Registry unter:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion
aus.

Was da ein Manifest in der EXE beinflussen könnte (Auslesen von Registry-Werten) verstehe ich im Moment nicht :?:

Windows 8.1 auf dem Notebook wurde aus einem $MS-ISO installiert, Windows 10 unter VMware ebenso.

Wenn da zweimal 6.3 in der Registry steht ist das eher ein $MS-Problem und nicht von Xbase++ oder VFP :evil:

Das og. Vorgehen funktioniert(e) bisher seit Windows 2000 sehr zuverlässig und kam immer zum gleichen Ergebnis wie die Windows-Funktion WinVer.
--
Hans-Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

Wolfgang Ciriack hat geschrieben:Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8). :)
meinst du damit den Eintrag in der Registry unter

Code: Alles auswählen

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion    CurrentBuild
gruss by OHR
Jimmy
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 996
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von HaPe »

Hallo Jimmy !

Ich habe jetzt mittels ResourceHacker von
http://www.angusj.com/resourcehacker/
das Manifest in einer VFP.exe mit deinen OS-IDs ergänzt.

Und ich muß zugeben, jetzt liefert
? OS(3) => 10
? OS(4) => 0
? OS(5) => 10240
die korrekten Informationen nachdem es ohne den "Patch"
? OS(3) => 6
? OS(4) => 2
? OS(5) => 9200
geliefert hatte.

Respekt :angel3:
--
Hans-Peter
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 996
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von HaPe »

Hallo Zusammen !
Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8).
Wozu könnte das benötigt werden?
Bisher benötige ich im Programm diese Unterscheidung nicht ...

Unter ProductName steht alles ausgeschrieben da.
Bei Windows 10 steht hier bei mir:
Windows 10 Enterprise N 2015 LTSB
Zuletzt geändert von HaPe am Do, 03. Dez 2015 9:26, insgesamt 1-mal geändert.
--
Hans-Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Betriebssystem ermittlen (1.90.355)

Beitrag von AUGE_OHR »

HaPe hat geschrieben:Ich habe jetzt mittels ResourceHacker von
http://www.angusj.com/resourcehacker/
das Manifest in einer VFP.exe mit deinen OS-IDs ergänzt.
und so liefert es dann auch die "richtigen" Ergebnisse. :thumbright:
gruss by OHR
Jimmy
Antworten