Ошибка: Failed to parse the Currency Converter XML document.
$1 603.45


Ошибка: Failed to parse the Currency Converter XML document.
$45 168.71


Ошибка: Failed to parse the Currency Converter XML document.
$12 474.19


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

[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 XP на Windows Vista довольно медленный процесс, особенно когда пользователь любопытен, но в то же время нерешителен. Не все убеждены в том, что новая ОС имеет функции, ради...
Подробнее...
Счетчик посещений на Delphi
Счетчики предназначены для учета количества посетителей на Ваш сайт. Кроме этого на счетчик можно возложить операции ведения статистики, учет хостов откуда пришли посетители и т.д.Данный пример...
Подробнее...
Форум без базы данных за...
Loser рассказывает как можно написать свой форум не используя никаких баз данныхЭтой статьей я хочу показать, что можно обойтись без баз данных, написав неплохой форум. Это статья является как бы...
Подробнее...
Oпасное возвращение червя...
RogueMario.A — это червь, который демонстрирует базовую версию широко известной игры Super Mario. Он делает это для того, чтобы скрыть свою вредоносную деятельность. «Представьте, что...
Подробнее...
Используем Cron
Данная заметка предназначенна для тех, кто собирается работать с cron, но еще не знает как все это делается. Я в кратце попробую объяснить что такое cron, для чего он нужен да и как вообще с ним...
Подробнее...
Безопасная настройка PHP...
ПредисловиеПриходится признать, что операционные системы Windows не собираются уходить в небытие. Игнорировать этот факт нельзя, поэтому нужно научиться мирно сосуществовать с таковыми. Как...
Подробнее...
Обзор игровых...
Если ваш стаж общения с компьютерами достаточно велик, то весьма вероятно, что вы помните то знаменательное событие — превращение ПК в мультимедийное устройство. Для России, да и для значительной...
Подробнее...
Шаги по увеличению...
Этот документ является списком параметров защиты для применения на FreeBSD серверах.Существует огромное количество статей, обзоров и инструкций в которых описаны методы защиты вашей FreeBSD...
Подробнее...
Система X Window
Система X Window представляет собой графическую оболочку для операционных систем семейства Unix.Топологически X Window состоит из двух частей: это Х-сервер и Х-клиент.Х-сервер — это программа...
Подробнее...
Диски, разделы, буквы...
Вот, не кажется мне MS Windows такой дружественной, как утверждают её пользователи. Ничего удивительного, впрочем: сам я её пользователем практически не являюсь, и сталкиваюсь с ней...
Подробнее...