![]() |
AW: Generierung einer MachineID: aktualisieren?
Hier
![]()
Delphi-Quellcode:
Function GetWinProductId: String;
Var Reg: TRegistry; Begin Reg:= TRegistry.Create(KEY_READ or $0100); Try Reg.RootKey:= HKEY_LOCAL_MACHINE; // If (Reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\', false)) Then If (Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion\')) Then Begin Try If Reg.ValueExists('DigitalProductId') Then Begin // Result:= Result + #13#10 + 'BuildGUID: ' + Reg.ReadString('BuildGUID'); // Result:= 'BuildGUID: ' + Reg.ReadString('BuildGUID'); Result:= Reg.ReadString('ProductId'); End; If Reg.ValueExists('DigitalProductId4') Then Begin // Result:= Result + #13#10 + 'BuildGUID: ' + Reg.ReadString('BuildGUID'); //Result:= 'BuildGUID: ' + Reg.ReadString('BuildGUID'); Result:= Reg.ReadString('ProductId'); End; Finally Reg.CloseKey; End;{Try} End;{If} Finally Reg.Free; End;{Try} End;{GetWinProductId} {-------------------} Das funktioniert auch unter Windows 10. Gruß, Andreas |
AW: Generierung einer MachineID: aktualisieren?
Delphi-Quellcode:
Grüße
programm
{$APPTYPE CONSOLE} uses SysUtils, ActiveX, ComObj, Variants; function GetWin32_DiskDriveCaption: String; const WbemUser =''; WbemPassword =''; WbemComputer ='localhost'; wbemFlagForwardOnly = $00000020; var FSWbemLocator : OLEVariant; FWMIService : OLEVariant; FWbemObjectSet: OLEVariant; FWbemObject : OLEVariant; oEnum : IEnumvariant; iValue : LongWord; begin; FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword); FWbemObjectSet:= FWMIService.ExecQuery('SELECT Caption FROM Win32_DiskDrive','WQL',wbemFlagForwardOnly); oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant; while oEnum.Next(1, FWbemObject, iValue) = 0 do begin result := String(FWbemObject.Caption);// String FWbemObject:=Unassigned; end; end; begin try CoInitialize(nil); try WriteLn(GetWin32_DiskDriveCaption); finally CoUninitialize; end; except on E:EOleException do Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode])); on E:Exception do Writeln(E.Classname, ':', E.Message); end; Writeln('Press Enter to exit'); Readln; end. Klaus |
AW: Generierung einer MachineID: aktualisieren?
Mir sind noch einige Fehler in hwid.pas (MachinenID - 32Bit.zip) aufgefallen: In allen Teilen der Routine GetIdeSerialNumber, die
Delphi-Quellcode:
enthalten, sollten die Registry-Aufrufe in einen weiteren Speicherschutzblock gepackt werden:
Reg.OpenKeyReadOnly(..)
Delphi-Quellcode:
Andreas
Try
... // bisheriger Code Finally Reg.CloseKey; End; |
AW: Generierung einer MachineID: aktualisieren?
@Klaus01: Prima, danke, es funktioniert! :thumb:
Gruß, Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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