Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Zählt Windows Home Server zu den Server Editions? (https://www.delphipraxis.net/163553-zaehlt-windows-home-server-zu-den-server-editions.html)

Codehunter 4. Okt 2011 10:00

Zählt Windows Home Server zu den Server Editions?
 
Hallo!

Ich schreibe an einer Windows-System-Versionsabfrage. Beim Windows Home Server ist das MSDN/PSDK etwas ungenau. Die Frage ist: Liefert GetWindowsVersionEx beim wProductType ein VER_NT_WORKSTATION oder ein VER_NT_SERVER?

Das MS-Marketing zählts wohl zu den Servern, die Entwicklungsabteilung zu den Workstations. Da ich so einen Homeserver aber nicht zum Testen habe, nun die Frage an euch. Vielleicht weiß es ja jemand.

Grüße
Cody

Union 4. Okt 2011 10:05

AW: Zählt Windows Home Server zu den Server Editions?
 
GetProductInfo()
PRODUCT_HOME_SERVER = $00000013; {Home Server Edition}

Codehunter 4. Okt 2011 10:08

AW: Zählt Windows Home Server zu den Server Editions?
 
Das war aber nicht die Frage :-)

Mir gehts ausdrücklich um das was GetWindowsVersionEx beim wProductType ausspuckt. GetProductInfo ist dann der Feinschliff in einer laaangen case-Kette :-)

Zumal PRODUCT_HOME_SERVER sich auf (laut MSDN) "Windows Storage Server 2008 R2 Essentials" bezieht, was namentlich auch wieder mehr nach einer Server Edition klingt.

sHoXx 4. Okt 2011 10:11

AW: Zählt Windows Home Server zu den Server Editions?
 
Ja, ich habe WHS2011 bei einem Freund installiert, und diverse (free)Virenprogramme gaben an, dass diese nicht für Server versionen erlaubt sind.

Ob dieses Ergebnis bei deiner Abfrage rauskommt kann ich dir nicht genau beantworten.

mquadrat 4. Okt 2011 10:30

AW: Zählt Windows Home Server zu den Server Editions?
 
Der WHS2011 basiert auf Server W2k8 R2. Insofern müsste er sich als Server ausweisen. Wenn du ein kleines Demo-Programm bastelst, kann ich das zu Hause laufen lassen.

Codehunter 4. Okt 2011 10:40

AW: Zählt Windows Home Server zu den Server Editions?
 
Der Beispiel-Quelltext von GetWindowsVersionEx bringt ein bisschen Licht ins Dunkel: Windows Home Server (2011) basieren beide auf einer Server Edition und weisen sich als solche auch aus.

Unlogisch dabei: "Windows XP Professional x64 Edition" weist sich ebenfalls als Serveredition aus, wohl weil es auf dem Kernel vom Windows Server 2003 R2 basiert.

Ich glaub die haben sich bei ihren Editions hoffnungslos verzettelt weil sie für eine Home Edition manchmal nen Server Kernel hernehmen und umgekehrt.

Vorallem, wie man das in einer Versionsabfrage rauskitzeln muss: Beim Windows Server 2003 und 2003 R2 muss man das mit GetSystemMetrics(SM_SERVERr2) abfragen, beim 2008 und 2008 R2 dagegen hat sich die Version Minor um eins erhöht. Ab Version 6.0 (Vista, Server 2008) gibts dann GetProductInfo. In der alten Zeit (Win 95 .. 2000) lief fast alles über die Versionsnummer, danach ging das Chaos los.

Codehunter 4. Okt 2011 12:44

AW: Zählt Windows Home Server zu den Server Editions?
 
Liste der Anhänge anzeigen (Anzahl: 2)
@mquadrat: Demoprogramm ist fertig. Siehe Anhang. Macht nix weiter als in einem Label die Windows-Version anzuzeigen.

EDIT: Version 2 kann jetzt auch die Win-7-x64 Editionen erkennen.

mquadrat 4. Okt 2011 13:23

AW: Zählt Windows Home Server zu den Server Editions?
 
Probiere ich heute abend aus.

Hobby-Programmierer 4. Okt 2011 15:06

AW: Zählt Windows Home Server zu den Server Editions?
 
Tach ...,
WHS 1 = Microsoft Windows Server 2003.

WHS2011 könnte ich bei Bedarf die nächsten Tage auch mal testen.

LG Mario

Commander Tom 4. Okt 2011 15:57

AW: Zählt Windows Home Server zu den Server Editions?
 
Bei mir auf Windows Home Server 1 SP 2 mit Power Pack 3 (6.0.2423.0) zeigt das Programm "Microsoft Windows Server 2003" an. Das Kommando "ver" in der Kommandozeile sagt "Microsoft Windows Version 5.2.3790".

Codehunter 7. Okt 2011 12:08

AW: Zählt Windows Home Server zu den Server Editions?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Commander Tom: Die Versionsangaben reichen nicht aus um eine Edition zuverlässig zu erkennen. Allerdings dachte ich bisher immer, Windows Home Server hätte erst ab der Vista-Ära angefangen, also der 6.0er Schiene. Scheinbar gab es vorher schon einen in der 2003er Ära, also v5.2.x. Weiß einer, ob es den WHS 2003 nur in 32 Bit gab oder auch 64 Bit?

Jetzt habe ich aber ein Problem: GetProductInfo() gab es erst ab v6.0.x. Hoffentlich haben die bei dem Ding VER_SUITE_WH_SERVER richtig gesetzt. Fürs erste habe ich die vier möglichen Varianten mit rein genommen WHS 2003 x86, x64, R2 x86 und R2 x64.

Neues Testprogramm siehe Anhang.

Chemiker 7. Okt 2011 13:05

AW: Zählt Windows Home Server zu den Server Editions?
 
Hallo Codehunter,

WHS 2003 gibt es nur in 32Bit.

Bis bald Chemiker

Hobby-Programmierer 7. Okt 2011 13:43

AW: Zählt Windows Home Server zu den Server Editions?
 
Tach ...,
WHS1 gab es nur als x32 Version und bei mir zeigt dein Programm 'Microsoft Windows Server 2003' an.

Meine Daten:
Code:
Betriebssystem      : Microsoft Windows Server 2003 Professional
Version             : 5.02.3790 Service Pack 2
Revision            : 3790.srv03_sp2_gdr.101019-0340 (Service Pack 2)
Plattform           : Uniprocessor Free
Workstation         : Ja
Domain Controller   : Ja
Server              : Ja
Web Edition         : Nein
DataCenter Edition  : Nein
Enterprise Edition  : Nein
SmallBusiness Server: Ja
SmallBusiness
Restricted Ser...   : Ja
Terminal Services   : Ja
Security            : Nein
Embedded            : Nein
Media Center        : Nein
Tablet PC           : Nein
Starter Edition     : Nein
Server 2003 R2      : Nein
Debug Version       : Nein
Hoffe das hilft ein wenig, LG Mario

Codehunter 7. Okt 2011 15:00

AW: Zählt Windows Home Server zu den Server Editions?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Hobby-Programmierer (Beitrag 1129123)
WHS1 gab es nur als x32 Version und bei mir zeigt dein Programm 'Microsoft Windows Server 2003' an.

Ich habs befürchtet, beim ersten WHS gabs VER_SUITE_WH_SERVER noch nicht. Hab nochmal ein bissi gebastelt. Bitte testet es nochmal, danke.

EDIT: Version 4 war buggy, hab gleich Version 5 rein gesetzt. Habe dazu auch noch die XP Mediacenter, Starter und Tablet PC mit reingenommen.

Hobby-Programmierer 7. Okt 2011 23:10

AW: Zählt Windows Home Server zu den Server Editions?
 
... und wieder fehlerhaft :wink:
Angezeigt wird 'Microsoft Windows Server 2003 Web Edition'.

Vielleicht zeigst du mal den Code damit wir uns selber schnell was basteln können zum testen.

[Edit]
Kurioses zur später Zeit.
Auf meinem Acer Server spielt deine Version 5 verrückt. Irgendwie schlägt der Zufallsgenerator zu. Startet man dein Programm öfter nacheinander (jeweils nur eine Instanz aktiv) kommen gelegentlich versch. Versionen raus. Bisher hatte ich:
Microsoft Windows Server 2003
Microsoft Windows Server 2003 Security Appliance
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Web Edition.

Hab das gerade nochmal in einer VM getestet, gleiches Ergebnis.
Vielleicht kann das jemand mit dem WHS ebenfalls mal testen.

Ich hoffe auch du machst keinen Mist auf den Systemen, aber die Startzeit von ca. 2 Sekunden - selbst in der VM macht mich zumindest misstrauisch.

LG Mario

Codehunter 10. Okt 2011 07:22

AW: Zählt Windows Home Server zu den Server Editions?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Hobby-Programmierer
Vielleicht zeigst du mal den Code damit wir uns selber schnell was basteln können zum testen.

Das stammt aus DelphiWorks, einer OpenSource-Lib die ich vor Jahren mal öffentlich gepflegt (delphiworks.sourceforge.net) und dann irgendwann aus Zeitmangel eingestellt habe. Bezogen auf den Mehraufwand das Ding zu veröffentlichen statt nur im Hausgebrauch zu verwenden. Die aktuelle Version 1.5 ist im Anhang. Die betreffende Funktion ist dwGetOS() in der dwWinSystem.pas sowie dwGetOSName() in der selben Unit.
Zitat:

Zitat von Hobby-Programmierer
Auf meinem Acer Server spielt deine Version 5 verrückt. Irgendwie schlägt der Zufallsgenerator zu. Startet man dein Programm öfter nacheinander (jeweils nur eine Instanz aktiv) kommen gelegentlich versch. Versionen raus. Bisher hatte ich:
Microsoft Windows Server 2003
Microsoft Windows Server 2003 Security Appliance
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Web Edition.

Betreffender Abschnitt ab Zeile 296:
Delphi-Quellcode:
                  if (OSV.wSuiteMask and VER_SUITE_DATACENTER) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_DATACENTER;
                  end else if (OSV.wSuiteMask and VER_SUITE_ENTERPRISE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_ENTERPRISE;
                  end else if (OSV.wSuiteMask and VER_SUITE_SECURITY_APPLIANCE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_SECAPPL;
                  end else if (OSV.wSuiteMask and VER_SUITE_BLADE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_WEBEDITION;
                  end else if (OSV.wSuiteMask and VER_SUITE_WH_SERVER) <> 0 then begin
                      result:= OS_WINDOWS_HOME_SERVER_2003;
                  end else begin
                      result:= OS_WINDOWS_SERVER_2003;
                  end;
Würde dann bedeuten, dass OSV von GetVersionEx nicht richtig initialisiert wird, seltsam.
Zitat:

Zitat von Hobby-Programmierer
Die Startzeit von ca. 2 Sekunden - selbst in der VM macht mich zumindest misstrauisch.

Mich aber auch... Bei mir startet das Ding ratzfatz, egal ob in der VM (VirtualPC) oder auf dem Hostsystem. Dass die Anwendung keinen "Mist" macht dürfte ja mit einem entsprechenden Traceprogramm jeder überprüfen können. Hier der gesamte Quelltext des Hostprogrammes:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  dwWinSystem, dwTypes;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption:= dwGetOSName;
end;

end.
EDIT: Ich denke, ich habe den Fehler gefunden. OSV wurde tatsächlich nicht richtig initialisiert. Ich konnte auch den beschriebenen Zufallseffekt reproduzieren und beheben. Im Anhang nun die korrigierte Version von DelphiWorks mit nochmals erweiterter Plattform-Erkennung und das Demo-Programm, ebenfalls ein wenig erweitert. Die Demo bringt nun eine Textliste der Rückgaben von GetVersionEx, GetSystemMetrics und GetSystemInfo. Das kann mir helfen, bei falsch erkannten Plattformen den Fehler zu finden bzw. neue Plattformen nachzutragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz