Uygulamamı Güvenli Hale Getirmek ve Uygulamanın Güvenli Olması İçin delphi programı Sunucu ve İstemciyi yapmaya çalışıyorum Onları kaybetmemek için değiştirilemeyen benzersiz bir Anahtar vermeliyim Onları Tutamak, Bu yüzden bence HDD Seri Numarası + Bios SN olmalı, ama Bios Değişebilir Olabilir hatırlıyorum Anakart Pil çıkarıldığında iş olmayacak. yüzden benim şimdi seçim i almak için aşağıdaki bu kodu denemek değilim ama işe didn'r HDD Gerçek seri numarasıdırDelphi ile Gerçek HDD Seri Numarası Alın
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,WbemScripting_TLB,ActiveX;
type
TForm4 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
function GetWMIstring (wmiHost, wmiClass, wmiProperty : string):string;
var // These are all needed for the WMI querying process
Locator: ISWbemLocator;
Services: ISWbemServices;
SObject: ISWbemObject;
ObjSet: ISWbemObjectSet;
SProp: ISWbemProperty;
Enum: IEnumVariant;
Value: Cardinal;
TempObj: OleVariant;
SN: string;
begin
try
Locator := CoSWbemLocator.Create; // Create the Location object
// Connect to the WMI service, with the root\cimv2 namespace
Services := Locator.ConnectServer(wmiHost, 'root\cimv2', '', '', '','', 0, nil);
ObjSet := Services.ExecQuery('SELECT * FROM '+wmiClass, 'WQL',
wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
Enum := (ObjSet._NewEnum) as IEnumVariant;
while (Enum.Next(1, TempObj, Value) = S_OK) do
begin
SObject := IUnknown(tempObj) as ISWBemObject;
SProp := SObject.Properties_.Item(wmiProperty, 0);
if VarIsNull(SProp.Get_Value) then
result := ''
else
begin
SN := SProp.Get_Value;
result := SN;
end;
end;
except // Trap any exceptions (Not having WMI installed will cause one!)
on exception do
result := '';
end;
end;
procedure TForm4.Button1Click(Sender: TObject);
var
x:string;
Y:string;
begin
X:=GetWMIstring('','Win32_BIOS','SerialNumber');
Y:=GetWMIstring('','Win32_DiskDrive"','SerialNumber') ;
ShowMessage(x+';'+y);
end;
end.
* yüzden herhangi biri benim kod düzeltmek veya bana başka fikir ver olabiliriz En sayının *
+1 (geç bağlama bu kod kullanımı ve
WbemScripting_TLB
üniteyi gerekmez) Bu örneği deneyin. Güzel göz! Bu ekstra '' 'onu işaret etmeden önce zordu. :-) –hızlı yanıt için çok teşekkürler, fark etmediğim sınıftan çift alıntıyı kaldırdım ama yine de bulunamadı ve geri dönmedi , delphi konsol için geliştirmek ben delphi app –
dönüştürmek bilmiyorum Belki de Windows XP kullanıyorsunuz? MSDN [belgeler] (http://msdn.microsoft.com/en-us/library/windows/ desktop/aa394132% 28v = vs85% 29.aspx) bu özellik hakkında (SerialNumber) diyor ki .. ..Windows Server 2003, Windows XP, Windows 2000 ve Windows NT 4.0: Bu özellik kullanılamaz. ' – RRUZ