Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Windows XP <> Wine (Linux) (https://www.delphipraxis.net/185747-windows-xp-wine-linux.html)

redox 3. Jul 2015 21:54

Windows XP <> Wine (Linux)
 
Die function GetWindowsVersion4me(ShortInfo: Boolean): string;
liefert unter Win10 gerade:
"Windows 10 Pro Insider Preview (Version 6.3/Build 10162) 64-Bit"

und unter WinXP:
"Microsoft Windows XP (Version 5.1/Build 2600) 32-Bit"

aber leider auch unter Wine:
"Microsoft Windows XP (Version 5.1/Build 2600) 32-Bit"

Stimmt ja alles soweit, nur würde ich gerne unterscheiden können, ob jemand ein "uraltes" XP oder einfach "nur" Wine unter Linux verwendet.

Wie/Kann man Wine von XP unterscheiden?

Vielen Dank für's Lesen und Antworten.


Delphi-Quellcode:
function IsWow64: Boolean;
type
  TIsWow64Process = function(// Type of IsWow64Process API fn
    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.dll'), '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;


function Get3264Windows: string;
begin
  result := '32-Bit';
  if IsWow64 then result := '64-Bit';
end;

function GetWindowsVersion4me(ShortInfo: Boolean): string;
var
  VerInfo: TOsversionInfo;
  PlatformId, VersionNumber, BuildNumber: string;
  Reg: TRegistry;
begin
  VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
  GetVersionEx(VerInfo);
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  case VerInfo.dwPlatformId of
    VER_PLATFORM_WIN32s:
      begin
        PlatformId := 'Windows 3.1';
      end;
    VER_PLATFORM_WIN32_WINDOWS:
      begin
        Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion');
        PlatformId := Reg.ReadString('ProductName');
        VersionNumber := Reg.ReadString('VersionNumber');
        BuildNumber := Reg.ReadString('CurrentBuildNumber');
      end;
    VER_PLATFORM_WIN32_NT:
      begin
        Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows NT\CurrentVersion');
        PlatformId := Reg.ReadString('ProductName');
        VersionNumber := Reg.ReadString('CurrentVersion');
        BuildNumber := Reg.ReadString('CurrentBuildNumber');
      end;
  end;
  Reg.Free;
  if shortinfo then
    Result := '(' + VersionNumber + '/' + BuildNumber + ')'
  else
    Result := PlatformId + ' (Version ' + VersionNumber + '/Build ' + BuildNumber
      + ')';
  Result := Result + #32 + Get3264Windows;
end;

creed steiger 3. Jul 2015 22:07

AW: Windows XP <> Wine (Linux)
 
How to detect wine kannst du dir mal ansehen:

http://wiki.winehq.org/DeveloperFaq#...4ea705ac02f350

Dalai 3. Jul 2015 22:10

AW: Windows XP <> Wine (Linux)
 
Zitat:

Zitat von redox (Beitrag 1307595)
Wie/Kann man Wine von XP unterscheiden?

Nicht über derlei Funktionen, weil die damit ermittelte Version von den Einstellungen im Wine abhängt, denn dort kann man definieren, welches Windows emuliert werden soll.

Aber es gibt andere Möglichkeiten. Ich glaube mich zu erinnern, dass es eine Reihe von Registry-Zweigen gab/gibt, die man eindeutig Wine zuordnen kann, weil sie nicht auf einem normalen Windows existieren. Meine Empfehlung lautet daher: nimm dir den Registry-Editor im Wine und schau mal durch, was du so findest.

[EDIT]
Dem roten Kasten ist wohl genau wie mir zu warm :mrgreen: und die verlinkte Methode sieht auch noch besser aus als meine Empfehlung.
[/EDIT]

MfG Dalai

redox 4. Jul 2015 04:57

AW: Windows XP <> Wine (Linux)
 
Danke!

https://pgolub.wordpress.com/2009/05...r-not-on-wine/


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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