Betriebssystem ermittlen (1.90.355)
Moderator: Moderatoren
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Betriebssystem ermittlen (1.90.355)
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).
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).
- Jan
- Marvin
- Beiträge: 14662
- 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)
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
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Betriebssystem ermittlen (1.90.355)
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".
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".
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
falsch !Jan hat geschrieben:Wenn ich das richtig verstanden habe dann geht das erst mit der 2.0.
es ist kein Trick sondern das Verständnis was eine Manifest Datei macht.Jan hat geschrieben:Es mag da aber Tricks geben, mit denen man das auch schon mit früheren Versionen schaffen kann.
binde mal diese *.RES ein ( für 1.9.355 )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).
Code: Alles auswählen
#include "os.ch"
PROC MAIN
? OnOSVersion()
WAIT
RETURN
FUNCTION OnOSVersion()
RETURN VAL( OS(OS_VERSION) )
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
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.
nun wissen wir ja das die Manifest Datei für visual Style zuständig ist ...
ich habe nun das Sample MDIDEMO.EXE und mein OsVER.EXE laufen lassen und man sieht das MDIDEMO.EXE als Vista eingestuft wird nun wissen wir ja das die Manifest Datei für visual Style zuständig ist ...
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14662
- 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)
Jimmy,AUGE_OHR hat geschrieben:falsch !Jan hat geschrieben:Wenn ich das richtig verstanden habe dann geht das erst mit der 2.0.es ist kein Trick sondern das Verständnis was eine Manifest Datei macht.Jan hat geschrieben:Es mag da aber Tricks geben, mit denen man das auch schon mit früheren Versionen schaffen kann.
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.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
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
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
Jimmy
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Betriebssystem ermittlen (1.90.355)
Dumme Frage: ich habe bereits eine Resourcen-Datei definiert, wie kann ich eine zweite einbinden?binde mal diese *.RES ein ( für 1.9.355 )
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Betriebssystem ermittlen (1.90.355)
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
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Betriebssystem ermittlen (1.90.355)
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.
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
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
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.peternmb hat geschrieben:Dumme Frage: ich habe bereits eine Resourcen-Datei definiert, wie kann ich eine zweite einbinden?
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
Jimmy
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: Betriebssystem ermittlen (1.90.355)
Danke, wenn ich das nur für eine Demo verwenden kann dann nützt mir diese Datei nicht wirklich etwas.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.
Ich benötige eine Funktion, die ich in meine Programme einbinden kann um mir das verwendetet Bdetriebssystem anzeigen zu lassen.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
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.
*** 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) 258-mal heruntergeladen
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
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 Usertreffenpeternmb 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.
gruss by OHR
Jimmy
Jimmy
- HaPe
- 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)
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
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
Hans-Peter
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
hi,
die Structure OSVERSIONINFOEX "müsste" ja die richtige Version ausgeben aber auch die "versagt" unter Windows 10 ohne entsprechendes Manifest.
wenn er dir bei Windows 8.1 "6.3" anzeigt und auch unter Windows 10 auch "6.3" dann hat VFP das selbe Problem.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
die Structure OSVERSIONINFOEX "müsste" ja die richtige Version ausgeben aber auch die "versagt" unter Windows 10 ohne entsprechendes Manifest.
gruss by OHR
Jimmy
Jimmy
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2950
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Betriebssystem ermittlen (1.90.355)
Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8).
Viele Grüße
Wolfgang
Wolfgang
- HaPe
- 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)
Hallo Zusammen !
Um es zu verdeutlichen:
Ich nutze die Funktion GetVersionEx in meiner Funktion nur zur Bestimmung der SP-Version.
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
Das og. Vorgehen funktioniert(e) bisher seit Windows 2000 sehr zuverlässig und kam immer zum gleichen Ergebnis wie die Windows-Funktion WinVer.
Welches Problem?wenn er dir bei Windows 8.1 "6.3" anzeigt und auch unter Windows 10 auch "6.3" dann hat VFP das selbe Problem.
Um es zu verdeutlichen:
Ich nutze die Funktion GetVersionEx in meiner Funktion nur zur Bestimmung der SP-Version.
Die obene genannten Infos lese ich aus der Registry unter:- CurrentVersion
- CurrentBuild
- ProductName
Schlüssel
#DEFINE KEY_NTCURRENTVERSION "Software\Microsoft\Windows NT\CurrentVersion"
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
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
Hans-Peter
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
meinst du damit den Eintrag in der Registry unterWolfgang Ciriack hat geschrieben:Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8).
Code: Alles auswählen
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion CurrentBuild
gruss by OHR
Jimmy
Jimmy
- HaPe
- 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)
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
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
--
Hans-Peter
Hans-Peter
- HaPe
- 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)
Hallo Zusammen !
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
Wozu könnte das benötigt werden?Dann muss man eben die Version am Build festmachen (>=10000 = Win10, <10000 Win8).
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
Hans-Peter
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Betriebssystem ermittlen (1.90.355)
und so liefert es dann auch die "richtigen" Ergebnisse.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.
gruss by OHR
Jimmy
Jimmy