![]() |
Windows Version Ermitteln
Hallo alle miteinander... hat jemand eine ahung wie man vernünftig die windows version ermitteln kann ausser über die registry oder peer WMI?
also z.b. diese option ist eigentlich des optionale aber da fehlen wieder welche z.b. Win64 MCE Versionen und unterschied zwischen den MCE versionen (2004, 2005)... und oder Vista Versionen (Starter, Home Basic, Home Premium, Business, Enterprise, Ultimate) vielleicht kann mir ja einer von euch dabei behilflich sein... danke schonmal im vorraus dafür!!!!!!! PS. sorry das ich nen neuen thread auf mache deswegen!!!!
Delphi-Quellcode:
type
POSVersionInfoEx = ^TOSVersionInfoEx; TOSVersionInfoEx = packed record dwOSVersionInfoSize: DWORD; dwMajorVersion : DWORD; dwMinorVersion : DWORD; dwBuildNumber : DWORD; dwPlatformId : DWORD; szCSDVersion : array [0..127] of AnsiChar; wServicePackMajor : Word; wServicePackMinor : Word; wSuiteMask : Word; wProductType : Byte; wReserved : Byte; end; const VER_SERVER_NT = $80000000; {$EXTERNALSYM VER_SERVER_NT} VER_WORKSTATION_NT = $40000000; {$EXTERNALSYM VER_WORKSTATION_NT} VER_SUITE_SMALLBUSINESS = $00000001; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS} VER_SUITE_ENTERPRISE = $00000002; {$EXTERNALSYM VER_SUITE_ENTERPRISE} VER_SUITE_BACKOFFICE = $00000004; {$EXTERNALSYM VER_SUITE_BACKOFFICE} VER_SUITE_COMMUNICATIONS = $00000008; {$EXTERNALSYM VER_SUITE_COMMUNICATIONS} VER_SUITE_TERMINAL = $00000010; {$EXTERNALSYM VER_SUITE_TERMINAL} VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED} VER_SUITE_EMBEDDEDNT = $00000040; {$EXTERNALSYM VER_SUITE_EMBEDDEDNT} VER_SUITE_DATACENTER = $00000080; {$EXTERNALSYM VER_SUITE_DATACENTER} VER_SUITE_SINGLEUSERTS = $00000100; {$EXTERNALSYM VER_SUITE_SINGLEUSERTS} VER_SUITE_PERSONAL = $00000200; {$EXTERNALSYM VER_SUITE_PERSONAL} VER_SUITE_BLADE = $00000400; {$EXTERNALSYM VER_SUITE_BLADE} VER_SUITE_EMBEDDED_RESTRICTED = $00000800; {$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED} VER_SUITE_SECURITY_APPLIANCE = $00001000; {$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE} const VER_NT_WORKSTATION = $0000001; {$EXTERNALSYM VER_NT_WORKSTATION} VER_NT_DOMAIN_CONTROLLER = $0000002; {$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER} VER_NT_SERVER = $0000003; {$EXTERNALSYM VER_NT_SERVER} {$ENDIF} // TOSVERSIONINFOEX_DEFINED function GetOSVersionInfo(var Info: TOSVersionInfoEx): Boolean; begin FillChar(Info, SizeOf(TOSVersionInfoEx), 0); Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx); Result := GetVersionEx(TOSVersionInfo(Addr(Info)^)); if (not Result) then begin FillChar(Info, SizeOf(TOSVersionInfoEx), 0); Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx); Result := GetVersionEx(TOSVersionInfo(Addr(Info)^)); if (not Result) then Info.dwOSVersionInfoSize := 0; end; end; function GetOSVersionText: string; var Info: TOSVersionInfoEx; Key: HKEY; begin Result := ''; if (not GetOSVersionInfo(Info)) then Exit; case Info.dwPlatformId of { Win32s } VER_PLATFORM_WIN32s: Result := 'Microsoft Win32s'; { Windows 9x } VER_PLATFORM_WIN32_WINDOWS: if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 0) then begin Result := 'Microsoft Windows 95'; if (Info.szCSDVersion[1] in ['B', 'C']) then Result := Result +' OSR2'; end else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 10) then begin Result := 'Microsoft Windows 98'; if (Info.szCSDVersion[1] = 'A') then Result := Result + ' SE'; end else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 90) then Result := 'Microsoft Windows Millennium Edition'; { Windows NT } VER_PLATFORM_WIN32_NT: begin { Version } if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then Result := 'Microsoft Windows Server 2003' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then Result := 'Microsoft Windows XP' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then Result := 'Microsoft Windows 2000' else Result := 'Microsoft Windows NT'; { Extended } if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then begin { ProductType } if (Info.wProductType = VER_NT_WORKSTATION) then begin if (Info.dwMajorVersion = 4) then Result := Result + #10'Workstation 4.0' else if(Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then Result := Result + #10'Home Edition' else Result := Result + #10'Professional'; end else if (Info.wProductType = VER_NT_SERVER) then begin if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then begin if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then Result := Result + #10'Datacenter Edition' else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result + #10'Enterprise Edition' else if (Info.wSuiteMask = VER_SUITE_BLADE) then Result := Result + #10'Web Edition' else Result := Result + #10'Standard Edition'; end else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then begin if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then Result := Result + #10'Datacenter Server' else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result + #10'Advanced Server' else Result := Result + #10'Server'; end else begin Result := Result + #10'Server ' + IntToStr(Info.dwMajorVersion) + '.' + IntToStr(Info.dwMinorVersion); if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then Result := Result + ', Enterprise Edition'; end; end; end; { CSDVersion } if (Info.dwMajorVersion = 4) and (StrIComp(Info.szCSDVersion, 'Service Pack 6') = 0) and (RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009', 0, KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) then begin Result := Result + #10'Service Pack 6a'; RegCloseKey(Key); end else Result := Result + #10 + StrPas(Info.szCSDVersion); Result := Result + #10'(Build ' + IntToStr(Info.dwBuildNumber and $FFFF) + ')'; end; end; end; |
Re: Windows Version Ermitteln
Zitat:
Ermitteln der Windows-Version Um zu ermitteln, welche Version von Windows Sie ausführen, 1.Gehen Sie in der Taskleiste auf Start und dann auf Ausführen. 2.Geben Sie in das Dialogfeld winver ein und klicken Sie auf OK. 3.Die Windows Version wird im Dialogfeld angezeigt. ------------------------------------------------------- Es wird aber nur Folgendes aus der Registry angezeigt: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] ProductName CurrentVersion BuildLab CSDVersion |
Re: Windows Version Ermitteln
In der Code-Lib gibt e dazu entsprechenden Cod. Der sollte eigentlich alles erkennen.
|
Re: Windows Version Ermitteln
@ Luckie... erkennt er auch die unterschiedlichen Vista Verionen? währe ganz praktisch ohne sowas über die Registry zu Ermitteln!
Hast du eventuell nen link? währe nett danke schonmal |
Re: Windows Version Ermitteln
Zitat:
|
Re: Windows Version Ermitteln
@ MagicAndre1981
wann ist es soweit wann es veröffentlicht wird? oder hast du einen teilausschnitt davon was du mir zur verfügung stellen kannst? z.b.:
Delphi-Quellcode:
oder:
const
VER_SERVER_NT = $80000000; {$EXTERNALSYM VER_SERVER_NT} VER_WORKSTATION_NT = $40000000; {$EXTERNALSYM VER_WORKSTATION_NT}
Delphi-Quellcode:
währe ganz nett.. danke schonmal im vorraus!
{ Version }
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then Result := 'Microsoft Windows Server 2003' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then Result := 'Microsoft Windows XP' else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then Result := 'Microsoft Windows 2000' else Result := 'Microsoft Windows NT'; { Extended } if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then begin { ProductType } if (Info.wProductType = VER_NT_WORKSTATION) then begin if (Info.dwMajorVersion = 4) then Result := Result + #10'Workstation 4.0' else if(Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then Result := Result + #10'Home Edition' else Result := Result + #10'Professional'; end |
Re: Windows Version Ermitteln
Zitat:
|
Re: Windows Version Ermitteln
kannst ja auch komplett schicken umsomehr infos umso besser eigentlich ... wobei wie gesagt sollte halt was sein wo man den unterschiied mit dabei hat... also home und die anderen version von vista.. vielleicht hast ja auch eine wo media center dabei ist.. also 2004 und 2005...
|
Re: Windows Version Ermitteln
Die unterschiedlichen Vista Version sind in der Registry zu finden mit dem Namen EditionID. Natürlich nur unter Vista ;). Und zwar unter: HKLM\SOFTWARE\Windows NT\CurrentVersion\
|
Re: Windows Version Ermitteln
@ Mazel
Joar des weis ich ja.. aber will eigentlich von der WMI und von der Reg weg.. am besten alles über funktionen oder proceduren... währe einfacher für mich und praktischer *gg* aba wann komt von dir ne neue version von mypc raus ^^ paar dinge habsch dir ja gesagt :D |
Re: Windows Version Ermitteln
Zitat:
|
Re: Windows Version Ermitteln
@ MagicAndre1981
Sage ich ja ... nur die brauche ich ja ... :-D also wenn du was gefunden hast oder was für mich dann immer her damit.. da habsch wieder was zu tun :-D |
Re: Windows Version Ermitteln
Die Windowsversion kann man auch ganz einfach mit der JVCL ermitteln. (weiß grad net wie die Kompo heißt; glaub JVSystemInformation oder so)
|
Re: Windows Version Ermitteln
@ fLaSh11
a stimmt aber ich wollte sowas alles ohne zusätliche komponenten machen bzw. bezweifle ich sogar das die kompnete die unterschiedlichen windows version ermitteln kann wie Starter oder Enterprise Version von Windows Vista... |
Re: Windows Version Ermitteln
Zitat:
Je weniger WMI und je weniger Registry umso besser ;) |
Re: Windows Version Ermitteln
@ Mazel
sage ich ja... jetzt muss mann nur noch des alles habe :-D |
Re: Windows Version Ermitteln
Nur mal so am Rande bemerkt, die API-Funktion wird auch nicht anderes machen, asl den Registryschlüssel auszulesen. Aber wenn es eine API-Funktion gibt, sollte man natürlich diese nehmen, falls Microsoft da mal was ändert.
|
Re: Windows Version Ermitteln
|
Re: Windows Version Ermitteln
Das Problm ist nicht der Code (desweiteren sollte man GetVersionEx benutzen), sondern die ermittelten Kennungen den Betriebssystembezeichnungen zu zu ordnen.
|
Re: Windows Version Ermitteln
Wollte grad den Code aus der CodeLib verbauen, weil ich prüfen muss, ob beim Anwender Vista läuft und hab dabei festgestellt, dass er bei meinem Vista Home Premium meint, ich hätte ein "Microsoft Windows Server 2003, Home Edition (Build 6000)". Wie soll man da auf "Vista" prüfen?
[edit] Andere Lösung gefunden: ![]() [/edit] |
Re: Windows Version Ermitteln
oder meine Kompo nutzen ;)
|
Re: Windows Version Ermitteln
Ich habe versucht, die von fLaSh11 erwähnte Komponente JvComputerInfoEx aus der JVCL zu verwenden, komme aber nicht an die properties OSVersion und ProductType heran (Ich hätte sie gerne als Caption (also als String) für ein Label.). Kann mir da jemand helfen?
|
Re: Windows Version Ermitteln
Zitat:
![]() |
Re: Windows Version Ermitteln
hier:
![]() Ich suche noch nal ne passenden Lizenz und dann gibts bald ein Update. |
Re: Windows Version Ermitteln
HI,
kann man nicht einfach die Ausgabe von "ver" (aus der Komandozeile) parsen und schon hat man die gesuchte Version?? Die Version steht in Zeile 2 rollstuhlfahrer |
Re: Windows Version Ermitteln
Zitat:
nun ja... bei JvComputerInfoEx hast du mehrere Eigenschaften, welche das OS betreffen. Da du gern eine String hättest kommt der Einfachheit halber die Eigenschaft JvComputerInfoEx.OS.ProductName in Frage. Wenn Du Die Eigenschaft OSVersion benutzen möchtest kannst du das doch umsetzen.
Delphi-Quellcode:
Es gibt mit Sicherheit noch elegantere Lösungen...aber Sonntag und diese Uhrzeit. :-D
if JvComputerInfoEx.OS.OSVersion = wvWinVista then Label.Caption:='auch das noch !';
Vieleicht hilft es ja. :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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