Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

как вытащить серийник BIOS в NT ?   Найти похожие ветки 

 
Device ©   (2002-06-16 03:37) [0]

собственно сабж %)


 
~Rand~ ©   (2002-06-16 08:44) [1]

Удалено модератором


 
Device ©   (2002-06-16 09:22) [2]

Сенксъ


 
nick_sniper   (2002-06-19 08:29) [3]

Попробуй вот так: (если что - пиши на мыло)

procedure TMachine.GetInfo;
var
bdata :pchar;
KeyState : TKeyBoardState;
sl: TStrings;
const
cBIOSName = $FE061;
cBIOSDate = $FFFF5;
cBIOSExtInfo = $FEC71;
cBIOSCopyright = $FE091;

rkBIOS = {HKEY_LOCAL_MACHINE\}"HARDWARE\DESCRIPTION\System";
rvBiosDate = "SystemBiosDate";
rvBiosID = "Identifier";
rvBiosVersion = "SystemBiosVersion";

rvComputerClass = "Computer";

begin
sl:=TStringList.Create;
try
FLastBoot:=Now-(GetTickCount/1000)/(24*3600);
except
FLastBoot:=0;
end;
FSystemUpTime:=GetSystemUpTime;
FName:=GetMachine;
FUser:=GetUser;
if isNT then begin
with TRegistry.Create do begin
rootkey:=HKEY_LOCAL_MACHINE;
if OpenKey(rkBIOS,false) then begin
if ValueExists(rvBIOSID) then
FBiosName:=ReadString(rvBIOSID);
if ValueExists(rvBIOSVersion) then begin
bdata:=AllocMem(255);
try
readbinarydata(rvBIOSVersion,bdata^,255);
FBIOSCopyright:=strpas(pchar(bdata));
except
end;
FreeMem(bdata);
end;
if ValueExists(rvBIOSDate) then
FBIOSDate:=ReadString(rvBIOSDate);
closekey;
end;
free;
end;
end else begin
FBIOSName:=string(pchar(ptr(cBIOSName)));
FBIOSDate:=string(pchar(ptr(cBIOSDate)));
FBIOSCopyright:=string(pchar(ptr(cBIOSCopyright)));
FBIOSExtendedInfo:=string(pchar(ptr(cBIOSExtInfo)));
end;
GetKeyboardState(KeyState);
FCapsLock:=KeyState[VK_CAPITAL]=1;
FNumLock:=KeyState[VK_NUMLOCK]=1;
FScrollLock:=KeyState[VK_SCROLL]=1;
GetClassDevices(ClassKey,rvComputerClass,DescValue,sl);
if sl.Count>0 then
FComp:=sl[0]
else
FComp:="";
sl.Free;
end;

procedure GetVideoBIOSInfo(var Version, Date: string);
var
StrData :PChar;
const
rk = {HKEY_LOCAL_MACHINE\}"HARDWARE\DESCRIPTION\System";
rvVideoBiosDate = "VideoBiosDate";
rvVideoBiosVersion = "VideoBiosVersion";
begin
with TRegistry.Create do begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey(rk,false) then begin
if ValueExists(rvVideoBIOSVersion) then begin
try
StrData:=StrAlloc(255);
ReadBinaryData(rvVideoBIOSVersion,StrData^,151);
Version:=StrPas(PChar(StrData));
StrDispose(StrData);
except
end;
end;
if ValueExists(rvVideoBIOSDate) then
Date:=ReadString(rvVideoBIOSDate);
CloseKey;
end;
Free;
end;
end;


 
Vladislav ©   (2002-06-19 09:31) [4]

Пример выше сработает только если админовские права. Для пользователя с ограниченными правами доступ к это ветке в реестре будет закрыт. Выход: либо расшаривать права на ветку, либо использовать вместо OpenKey метод OpenKeyReadOnly (этот метод появился в классе начиная с D4)


 
nick_sniper ©   (2002-06-19 18:42) [5]

Если внести изменения он будет работать ?



Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-95965
Socol
2002-08-04 11:11
2002.08.29
Исходники


3-95704
Sim0n
2002-08-08 08:54
2002.08.29
помогите разобраться с DBGrid


1-95822
Eraice
2002-08-17 03:07
2002.08.29
tWebBrowser и MS Internet Explorer


3-95721
SZap
2002-08-08 13:34
2002.08.29
Как сформировать запрос в TQuery


3-95690
Chak
2002-08-08 15:50
2002.08.29
Invalid BLOB handle in record buffer.