Текущий архив: 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.45 MB
Время: 0.005 c