$539.04


$539.74


$60.57


Как узнать информацию о системе

[code]Вы, возможно, видели нестандартные дельфийские компоненты, позволяющие сделать лог системы. Сейчас мы самостоятельно реализуем что-нибудь не хуже.

Прежде всего, где хранится эта самая системная инфа? В Реестре, куда мы сможем залезть, добавив модуль registry в раздел uses. Версия системы, имя владельца и т.д. имеют следующий адрес:

hkey_local_machinesoftwaremicrosoft windowscurrentversionexplorer

Или (для windows nt):
hkey_local_machinesoftwaremicrosoft windows ntcurrentversion

А информация о системных папках хранится здесь:
hkey_current_usersoftwaremicrosoft windowscurrentversionexplorershell folders


В то же время данные о некоторых системных устройствах хранятся в файле system.ini. Значит, добавим модуль inifiles, чтобы осуществить чтение информации из этого файла. Таким образом, если вы умеете работать с Реестром и ini, узнать системную информацию вам будет так же просто, как сделать format c: complete из-под загрузочного диска. Изюминка в том, что наше приложение, которое эту инфорнмацию собирает и записывает в лог-файл, будет консольным, и создать его можно через file>new>other>console application.

program osinfo;


uses
sysutils,
windows,
registry,
inifiles; //!!

//ключи реестра, в которых будем искать информацию
const
folders = «softwaremicrosoftwindowscurrentversionexplorershell folders»;
winvers = «softwaremicrosoftwindowscurrentversion»;

var
f: textfile; //файл с логом
serialnum: pdword;
a: dword;
i: integer;
drive, windir: string;
buffer: array [0..255] of char;
ms: tmemorystatus;

//читаем информацию из Реестра
function wininfo(root_key: hkey; key_open, key_read: string): string;
var
registry: tregistry;
begin
//если windows nt, открываем другой ключ
if ((getversion and $80000000)=0) and (key_open=winvers) then
key_open:=«softwaremicrosoftwindows ntcurrentversion»;
registry := tregistry.create;
try
registry.rootkey := root_key;
registry.openkey(key_open, false);
result := registry.readstring(key_read);
finally
registry.free;
end;
//если ничего не найдено, выводим «невозможно определить»
if result<>emptystr then result:=key_read+«: »+result else result:=key_read+«: невозможно определить»;
end;

//читаем из system.ini
function getdevice(section, ident: string): string;
var inifile: tinifile;
begin
inifile:=tinifile.create(windir+«system.ini»);
result:=inifile.readstring(section,ident,«неизвестное устройство»);
inifile.free;
end;

begin
//Узнаем директорию Винды. Она нам еще понадобится
getwindowsdirectory(buffer, sizeof(buffer));
windir:=buffer;
assignfile(f,windir+«osinfo.txt»); //Соединямся с файлом лога
rewrite(f); //Переходим в начало файла
writeln(f,«Лог создан: »+datetimetostr(now));
writeln(f,«»);
//пользователь, версия ОС и т.д.
writeln(f,« О Системе:»);
writeln(f,wininfo(hkey_local_machine,winvers,«registeredowner»));
writeln(f,wininfo(hkey_local_machine,winvers,«registeredorganization»));
writeln(f,wininfo(hkey_local_machine,winvers,«productid»));
writeln(f,wininfo(hkey_local_machine,winvers,«productkey»));
writeln(f,wininfo(hkey_local_machine,winvers,«productname»));
writeln(f,wininfo(hkey_local_machine,winvers,«version»));
writeln(f,wininfo(hkey_local_machine,winvers,«versionnumber»));
//Какой браузер?
writeln(f,wininfo(hkey_local_machine,winvers,«plus! versionnumber»));
writeln(f,«»);
writeln(f,« Память:»);
writeln(f,«Доступные носители: »);
//Получаем информацию о дисках
for i := 0 to 25 do
if (getlogicaldrives and (1 shl i)) <> 0 then begin
drive:=char(ord(«a») + i) + «:»;
case getdrivetype(pchar(drive)) of
drive_removable: writeln(f,drive+« (гибкий диск)»);
drive_cdrom: writeln(f,drive+« (cd-rom)»);
drive_fixed: begin
//находим серийный номер жесткого диска
new(serialnum);
if getvolumein formation(pchar(drive),buffer,sizeof(buffer),serialnum,a,a,nil,0) then
writeln(f,drive+« (жесткий диск, sn »+inttostr(serialnum^)+«)»);
end;
else writeln(f,drive+« (неизвестный диск»);
end;
end;
//информация о памяти
globalmemorystatus(ms);
writeln(f,«Оперативная память: »+ formatfloat(«#,###« kb»», ms.dwtotalphys / 1024));
writeln(f,«Свободно на жестком диске: »+ formatfloat(«#,###« байт»»,diskfree(3)));
//«3» указывает на диск c:
writeln(f,«Объем жесткого диска: »+ formatfloat(«#,###« байт»»,disksize(3)));
writeln(f,«»);
//узнаем об устройствах из system.ini
writeln(f,« Устройства:»);
writeln(f,«Клавиатура: »+getdevice(«boot.de scription»,«keyboard.typ»));
writeln(f,«Мышь: »+getdevice(«boot.de scription»,«mouse.drv»));
writeln(f,«Дисплей: »+getdevice(«boot.de scription»,«display.drv»));
writeln(f,«Хранитель экрана: »+getdevice(«boot»,«scrnsave.exe»));
writeln(f,«»);
//читаем системные папки из Реестра
writeln(f,« Системные папки:»);
getcurrentdirectory(sizeof(buffer), buffer);
writeln(f,«Текущий каталог: »+buffer);

writeln(f,wininfo(hkey_current_user,folders,«cache»));
writeln(f,wininfo(hkey_local_machine,winvers,«configpath»));
writeln(f,wininfo(hkey_current_user,folders,«cookies»));
writeln(f,wininfo(hkey_current_user,folders,«desktop»));
writeln(f,wininfo(hkey_current_user,folders,«favorites»));
writeln(f,wininfo(hkey_current_user,folders,«fonts»));
writeln(f,wininfo(hkey_current_user,folders,«history»));
writeln(f,wininfo(hkey_current_user,folders,«local appdata»));
writeln(f,wininfo(hkey_local_machine,winvers,«mediapath»));
writeln(f,wininfo(hkey_current_user,folders,«my music»));
writeln(f,wininfo(hkey_current_user,folders,«my pictures»));
writeln(f,wininfo(hkey_current_user,folders,«nethood»));
writeln(f,wininfo(hkey_current_user,folders,«personal»));
writeln(f,wininfo(hkey_current_user,folders,«printhood»));
writeln(f,wininfo(hkey_local_machine,winvers,«programfilesdir»));
writeln(f,wininfo(hkey_local_machine,winvers,«commonfilesdir»));
writeln(f,wininfo(hkey_current_user,folders,«programs»));
writeln(f,wininfo(hkey_current_user,folders,«recent»));
writeln(f,wininfo(hkey_current_user,folders,«sendto»));
writeln(f,wininfo(hkey_current_user,folders,«start menu»));
writeln(f,wininfo(hkey_current_user,folders,«startup»));
getsystemdirectory(buffer, sizeof(buffer));
writeln(f,«system: »+buffer);
gettemppath(sizeof(buffer),buffer);
writeln(f,«temp: »+buffer);
writeln(f,wininfo(hkey_current_user,folders,«templates»));
writeln(f,wininfo(hkey_local_machine,winvers,«wallpaperdir»));
writeln(f,«windows: »+windir);
close(f); //отсоединяемся от файла
end.

Результаты сохранятся в директории windows в файле osinfo.txt. Чтобы ознакомиться с ними, вам достаточно открыть этот файл.

Такое приложение весит 156 кило. А если бы мы создали «нормальную» программу с формой, размер был бы в два-три раза больше[code]

 

Интересное

Раскрутка это еще и заработок
Странно. Но многие вебмастера разделяют понятия раскрутка и заработок. Т.е. все понимают, что если ресурс будет раскручен, с него можно будет и деньги получить.Но вот, к сожалению, почему-то почти...
Подробнее...
Оптимизация памяти в...
Windows XP предоставляет больше возможностей по оптимизации памяти, нежели Windows 2000. Вместе с тем, она и требует больше свободных ресурсов. Данная статья поможет вам настроить вашу систему для...
Подробнее...
chmod - изменение режима...
Все чаще обнаруживается, что некоторые начинающие сайтостроители, увлеченные скриптованием (на perl/cgi, php и т.д.) не знают, что такое chmod и как его использовать. В этом кратком руководстве вы...
Подробнее...
10 полезных возможностей...
В состав операционной системы Windows Vista вошло антишпионское приложение «Защитник Windows» (Windows Defender), предназначенное для защиты от вредоносного ПО и сбора информации о пользователях и...
Подробнее...
Что делать, если Windows...
Если Windows не может корректно завершить работу, в большинстве случаев это связано либо с системой управления электропитанием, либо с неправильно работающими драйверами. Могут существовать и...
Подробнее...
Особенности Windows XP...
XP Service Pack 2 и беспроводные сетиВпервые выпустив XP в октябре 2001 года, Microsoft включила в его состав средства работы с беспроводными сетями, предоставив клиентам сравнительно простой...
Подробнее...
Стратегии высокой надежности
Большинство предприятий среднего и большого бизнеса сегодня очень сильно зависят от своих компьютерных сетей. Многие предприятия также имеют приложения, которые являются ключевыми для задач...
Подробнее...
Работаем с рабочим столом
Привет! Сегодня мы будем работать с тем, что постоянно видим на экране своего монитора, а именно со своим рабочим столом. Не буду сильно болтать о том о сем а сразу же начну с полезных примеров....
Подробнее...
File Transfer Protocol:...
У меня нет выхода в Интернет, но есть доступ к почтовому ящику и возможность отсылать и получать письма. Можно ли как-нибудь скачивать из Интернета файлы, используя такой усеченный доступ? Да, вы...
Подробнее...
Чистка Windows
Причин подобного поведения «форточек» можно привести массу — от всевозможного программного мусора, забивающегося в укромные уголки Windows и сжирающего немало ресурсов компьютера, до инфицирования...
Подробнее...