Windows 32 oder 64 bit?

Windows 32 oder 64 bit?

Beitragvon TT73GP7 » 16. Feb 2018, 10:59 Windows 32 oder 64 bit?

Hallo zusammen,

also hier in der Firma sollten Angeblich nur 64 Bit Rechner rumstehen (dachten wir bis gestern) nun hab ich Endlich mal die neue Lazarus Version auf 64 bit installiert und siehe da 30 % der Clients gingen nicht mehr. Nun haben wir aber viele Studenten die von zuhause aus arbeiten und das nicht so mitteilen wenn ihr Client so funktioniert. Deswegen wollte ich mal nachfragen ob ich irgendwie auslesen kann welches Betriebssystem der Anwender hat, 32 oder 64 bit und wie der Rechnername ist?

Tja und dann noch gleich automatisch ein Report erstellen wie teuer es wäre neue Rechner anzuschaffen :D
das wäre so mein Traum :D


das wäre echt klasse

:)
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

Beitragvon shokwave » 16. Feb 2018, 12:18 Re: Windows 32 oder 64 bit?

Ich hab mal das benutzt:
Code: Alles auswählen
//False = 32bit system
//True = 64bit system
function IsWOW64: Boolean;
begin
  Result := sysutils.GetEnvironmentVariable('ProgramW6432')<>'';
end;       
mfg Ingo
shokwave
 
Beiträge: 420
Registriert: 15. Nov 2007, 16:58
Wohnort: Rudolstadt
OS, Lazarus, FPC: Win10 (L 1.6 FPC 3.0.0) | 
CPU-Target: i386,x64
Nach oben

Beitragvon MacWomble » 16. Feb 2018, 19:30 Re: Windows 32 oder 64 bit?

Vorsicht! Erfahrungsgemäß ist auf vielen 64Bit-fähigen Rechnern ist ein 32-Bit Windows installiert! Es liegt nicht immer an der Hardware!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 514
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.60 (FPC 3.1.1 Rev 39389) | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Timm Thaler » 17. Feb 2018, 06:37 Re: Windows 32 oder 64 bit?

MacWomble hat geschrieben:Vorsicht! Erfahrungsgemäß ist auf vielen 64Bit-fähigen Rechnern ist ein 32-Bit Windows installiert! Es liegt nicht immer an der Hardware!


Auf dem 32-Bit Win wirst Du aber auch kein ein 64-Bit Lazarusprogramm laufen lassen können.

Unter Start => Computer => rechte Maus => Eigenschaften bekommst Du sowohl Prozessor als auch OS-Version angezeigt.
Timm Thaler
 
Beiträge: 581
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.64 FPC3.0.4, Raspbian Stretch Laz1.62 FPC3.0.2 | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon MacWomble » 17. Feb 2018, 09:39 Re: Windows 32 oder 64 bit?

Timm Thaler hat geschrieben:Auf dem 32-Bit Win wirst Du aber auch kein ein 64-Bit Lazarusprogramm laufen lassen können.

... und auf 32-bit Hardware kein W64
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 514
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.3 Cinnamon / CodeTyphon Generation V Plan 6.60 (FPC 3.1.1 Rev 39389) | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon Mathias » 17. Feb 2018, 17:38 Re: Windows 32 oder 64 bit?

Dies müsste doch auch irgendwo in der Registry vermerkt sein, so das man es im eigenen Lazarus-Programm abfragen kann ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3993
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Socke » 17. Feb 2018, 18:30 Re: Windows 32 oder 64 bit?

Man kann auch einfach das Betriebssystem selbst fragen:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684139(v=vs.85).aspx

Die Funktion ist in der Unit jwawinbase deklariert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2498
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon wp_xyz » 17. Feb 2018, 18:34 Re: Windows 32 oder 64 bit?

Code: Alles auswählen
function GetComputerName : string;
{$IFDEF WINDOWS}
var
  len : cardinal;
begin
  len := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(result, len);
  if Windows.GetComputerName(PChar(result), len) then begin
    SetLength(Result, len);
    Result := SysToUTF8(Result);
  end
  else
    RaiseLastWin32Error;
end;
{$ELSE}
begin
  Result := GetHostName;
end;
{$ENDIF}
 
// Gibt aber auch bei einem 64-bit Windows "Win32" aus, wenn das Programm als 32-bit-Programm kompiliert wurde.
function GetOS: string;
begin
  result := {$I %FPCTARGETOS%};
end;
 
uses
  Windows;
 
function GetOS: string;
begin
  result := {$I %FPCTARGETOS%};
end;
 
function GetWinVer: string;
// Liefert die Versionsnummer von Windows als String
begin
// http://wiki.lazarus.freepascal.org/WindowsVersion/de
{ Beispiele für Windows-Versionsnummern:
5.0 => Windows 2000
5.1 => Windows XP
5.2 => Windows XP64 oder Windows 2003 Server
6.0 => Windows Vista oder Windows 2008 Server
6.1 => Windows 7 oder Windows 2008 Server R2
6.2 => Windows 8 oder Windows Server 2012
6.3 => Windows 8.1 oder Windows Server 2012 RS
}

  case Win32MajorVersion of
    5: case Win32MinorVersion of
         0: Result := 'Windows 2000';
         1: Result := 'Windows XP';
         2: Result := 'Windows XP64/Windows 2003 Server';
       end;
    6: case Win32MinorVersion of
         0: Result := 'Vista/Windows 2008 Server';
         1: Result := 'Windows 7/Windows 2008 Server R2';
         2: Result := 'Windows 8/Windows Server 2012';
         3: Result := 'Windows 8.1/Windows Server 2012 RS';
       end;
   10: Result := 'Windows 10';
   else Result := Format('%d.%d', [Win32MajorVersion, Win32MinorVersion]);
  end;
  Result := Result + ' Build ' + IntToStr(Win32BuildNumber);
  if Win32CSDVersion <> '' then
    Result := Result + ' (' + Win32CSDVersion + ')';
end;
 
// http://wiki.lazarus.freepascal.org/Dete ... 64_example
function IsWindows64: boolean;
{ Detect if we are running on 64 bit Windows or 32 bit Windows,
  independently of bitness of this program.
  Original source:
  http://www.delphipraxis.net/118485-ermi ... ystem.html
  modified for FreePascal in German Lazarus forum:
  viewtopic.php?f=55&t=5287
}

{$ifdef WIN32} //Modified KpjComp for 64bit compile mode
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 := TIsWow64Process(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('IsWindows64: bad process handle');
    // Return result of function
    Result := IsWow64Result;
  end
  else
    // Function not implemented: can't be running on Wow64
    Result := False;
{$else} //if were running 64bit code, OS must be 64bit :)
begin
 Result := True;
{$endif}
end;
 
procedure TForm1.FormCreate(Sender: TObject);
const
  bitness: array[boolean] of integer = (32, 64);
var
  s: String;
begin
  if IsWindows64 then s := '64 bit' else s := '32 bit';
  Caption := Format('%s %d-bit', [
    GetWinVer, bitness[IsWindows64]
  ]);
end
wp_xyz
 
Beiträge: 2533
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried