AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OS Version ermitteln

Ein Thema von Luckie · begonnen am 30. Nov 2010 · letzter Beitrag vom 31. Dez 2010
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

OS Version ermitteln

  Alt 30. Nov 2010, 03:51
Ich weiß, dass es davon genug Versionen gibt, also warum nicht noch eine?

Könntet ihr es bitte mal testen? Ich habe es unter Windows 7 unter den verschiedenen Kompatibilitätsmodi ausprobiert. Klappt alles, bis auf Server 2008, da bekomme ich immer Vista raus.

Projekt im Anhang.
Angehängte Dateien
Dateityp: zip Project1.zip (199,8 KB, 65x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

AW: OS Version ermitteln

  Alt 30. Nov 2010, 06:26
Hallo Michael

1. Sehe ich es richtig: Wenn Architecture = AMD64 dann 64-bit, wenn Architecture = Intel dann 32-bit ?

Delphi-Quellcode:
GetSystemInfo(si);
  if (osvi.dwMajorVersion >= 6) then
  begin
    if (si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) then
      Result := Result + ' 64-bit'
    else if (si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_INTEL) then
      Result := Result + ' 32-bit';
  end;
end
2. LoadLibrary ... FreeLibrary (zudem lädst du zwei Mal den Kernel)

3. (Noch) nicht Unicode tauglich.

Aufruf von GetVersionEx gibt Fehler 'The data area passed to a system call is too small'.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: OS Version ermitteln

  Alt 30. Nov 2010, 07:28
Hallo Michael,

auf einer Windows XP Professional SP3 Installation kommt als Ergebnis:

---------------------------
Project1
---------------------------
Windows XP Home Edition Service Pack 3 Build: 2600
---------------------------
OK
---------------------------

Ich habe mir zwar mal den Quelltext angeschaut, nur finde ich da ohne Delphi gerade den Fehler nicht. Für die Windows-API GetProductInfo gibt es noch mehr Ergbenisse. Die API arbeitet sehr zuverlässig, da ich diese bei mir im SystemInfo einsetze.

Edit:
Um zu überprüfen, ob das OS 32Bit oder 64Bit ist, würde ich diese Funktion nehmen :
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
//
// Bestimmen ob das Betriebssystem 64Bit ist oder nicht
//
function IsWow64: Boolean;
type
  TIsWow64Process = function(Handle: Windows.THandle; var Res: Windows.BOOL): Windows.BOOL; stdcall;
var
  IsWow64Result: Windows.BOOL; // Result from IsWow64Process
  IsWow64Process: TIsWow64Process; // IsWow64Process fn reference
begin
  // Try to load required function from kernel32
  IsWow64Process := Windows.GetProcAddress(Windows.GetModuleHandle('kernel32'), 'IsWow64Process');
  if Assigned(IsWow64Process) then
  begin
    // Function is implemented: call it
    if not IsWow64Process(Windows.GetCurrentProcess, IsWow64Result) then
      raise SysUtils.Exception.Create('IsWow64: bad process handle');
    // Return result of function
    Result := IsWow64Result;
  end
  else
    // Function not implemented: can't be running on Wow64
    Result := False;
end;
Dazu gibt es auch einen Beitrag hier im Forum, finde aber zu Zeit den Link nicht mehr.
Rolf Warnecke
App4Mission

Geändert von RWarnecke (30. Nov 2010 um 08:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#4

AW: OS Version ermitteln

  Alt 30. Nov 2010, 08:50
Hallo Michael,

leider Funktioniert es bei Windows 7 Professional 64-Bit auch nicht. Da kommt die Meldung 32-Bit.

Gruß Jens
Miniaturansicht angehängter Grafiken
test.png  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: OS Version ermitteln

  Alt 30. Nov 2010, 09:03
Windows 7 Prof 32 Bit: Passt
Windows XP home SP3: Passt nicht
---------------------------
Project1
---------------------------
Windows XP Professional Service Pack 3 Build: 2600
---------------------------
OK
---------------------------
(schön wärs )
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: OS Version ermitteln

  Alt 30. Nov 2010, 10:10
Hallo.

Prinzipiell stimmts bei mir:

---------------------------
Project1
---------------------------
Windows Vista rocessExefileBusiness Edition Service Pack 1 Build: 6001 32-bit
---------------------------
OK
---------------------------

Aber da hat sich glaube ich irgendwas dazwischen geschummelt, was da nicht hingehört
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#7

AW: OS Version ermitteln

  Alt 30. Nov 2010, 10:13
Mein Windows 7 Ultimate 64 wird als:

---------------------------
Project1
---------------------------
Windows 7 Ultimate Edition Build: 7600 32-bit
---------------------------
OK
---------------------------


erkannt.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

AW: OS Version ermitteln

  Alt 30. Nov 2010, 10:31
Windows 7 Professional 32-bit: Passt (Meldung als: Windows 7 Professional Build: 7600 32-bit)
Windows XP Professional SP3 32-bit (VM, "Windows XP-Mode"): Passt NICHT (Meldung als: Windows XP Home Edition Service Pack 3 Build: 2600)
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: OS Version ermitteln

  Alt 30. Nov 2010, 11:23
Im Quellcode habe ich ja die Quelle aus dem MSDN angegeben, wo ich den C Code übersetzt habe. Eventuell habe ich da einen Fehler gemacht.

C:
Code:
if Wert1 & Wert dann
Wurde bei mir zu
if Wert1 AND WERT2 = 0 dann Das könnte eventuell nicht stimmen.

Und die 32/64-BIT Erkennung scheint nicht zu funktionieren.

Da ich nicht alle Versionen testen kann. Würde ich euch bitte doch mal den Code zu debuggen (sollte nicht sehr schwer sein, da es nur Verzweigungen sind) und zu gucken, wo er in den falschen Zweig springt und mir dass dann mitzuteilen.

Warum ich das noch mal mache ist, dass ich die vorgeschlagene Methode zur Bestimmung des Betriebssystems umsetzen wollte. Deswegen auch die 32/64-Bit Erkennung auf diese Weise.

Und Unicode ist es noch nicht, weil ich es hier auf dem Sofa hinter der Front auf dem Netbook mit meinem alten D7 entwickele. Kann man es so ändern, dass es sowohl unter D/ als Ansi compiliert, als auch unter D2010 als Unicode? Welche Datentypen müsste ich da nehmen. String sollte ja als Ansi und Unicode kompilieren.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (30. Nov 2010 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: OS Version ermitteln

  Alt 30. Nov 2010, 11:28
C:
Code:
if Wert1 & Wert dann
Wurde bei mir zu
if Wert1 AND WERT2 = 0 dann Das könnte eventuell nicht stimmen.
Das stimmt tatsächlich nicht.
Code:
if (Wert1 & Wert2)
müsste

if (Wert1 and Wert2) <> 0 then

sein. Oder auch

if Boolean(Wert1 and Wert2) then
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz