PDA

View Full Version : یک سوال در مورد خواندن رجیستری WinXP (فوری)



A.Nemati
چهارشنبه 05 شهریور 1382, 20:51 عصر
سلام دوستان
وقتی میخوام کلید SystemBiosVersion را در WinXP بخوانم دچار خطای Invalid data type for 'SystemBiosVersion' میشوم. اگر روش امتحان شده‌ای یا کامپونتتی برای دادن اطلاعات نسخه بایوس در دلفی 7 با ویندوز ایکس پی دارید ممنون میشوم بدانم.
با تشکر

مهدی کرامتی
چهارشنبه 05 شهریور 1382, 21:27 عصر
1- کد مورد استفاده تان را اینجا بنویسید.

2- یک مقاله درباره MiTec SysInfo در کارگاه دلفی (http://www.delphishop.com) وجود دارد. آنرا ببینید.

A.Nemati
جمعه 07 شهریور 1382, 19:23 عصر
سلام
من کد زیر را استفاده میکنم
امیدوارم بتوانید راهنماییم کنید.


function BiosID : string;
var Retvar : string;
Buffer : PChar;
WinReg : TRegistry;

begin
WinReg := nil;
RetVar := '????????';

try
WinReg := TRegistry.Create;
WinReg.RootKey := HKEY_LOCAL_MACHINE;
if WinReg.OpenKeyReadOnly('\HARDWARE\DESCRIPTION\Syst em') then
begin
GetMem(Buffer,$2000);
WinReg.ReadBinaryData('SystemBiosVersion',Buffer^, 100);
RetVar := WinReg.ReadString('Identifier') + ' ' + Buffer;
FreeMem(Buffer);
end;
finally
WinReg.Free;
end;

Result := Retvar;
end;

Kambiz
شنبه 08 شهریور 1382, 17:16 عصر
نوع داده‌ی فیلد مورد نظر شما REG_MULTI_SZ است. این نوع داده آرایه‌ای از String است و پایان هر String با یک Null Character مشخص می‌شود و پایان آرایه هم با یک Null Character اضافه.

function GetSystemBiosVersion: String;
var
Registry: TRegistry;
I: Integer;
begin
Result := '';
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_LOCAL_MACHINE;
if Registry.OpenKeyReadOnly('\HARDWARE\DESCRIPTION\Sy stem') then
begin
if Registry.ValueExists('SystemBiosVersion') then
begin
SetLength(Result, Registry.GetDataSize('SystemBiosVersion'));
Registry.ReadBinaryData('SystemBiosVersion', PChar(Result)^, Length(Result));
for I := Length(Result) downto 1 do
if Result[I] = #0 then
begin
Delete(Result, I, 1);
Insert(#13#10, Result, I);
end;
end;
Registry.CloseKey
end;
finally
Registry.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := GetSystemBiosVersion;
end;

A.Nemati
چهارشنبه 12 شهریور 1382, 20:30 عصر
DelphiArea جان سلام

از راهنمایی ات بسیار ممنون. :)