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


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


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


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

[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]

 

Интересное

Настройка VPN-сервера с...
Для начала: данная статья не претендует на роль полноценного руководства или панацеи на все случаи жизни, посему все вопросы и пожелания по исправлению и дополнению статьи шлем на.
Подробнее...
Коммутаторы уровня SOHO
Интересно пронаблюдать историю массового развития локальных сетей. Помнится, еще десять лет назад не составляло особого труда построить сеть буквально в чистом поле, без какого бы то ни было...
Подробнее...
Создание маршрутизатора на...
Есть две сети которые необходимо соединить роутером. Обе сети полностью сделаны на Windows 2000, с использованием ActiveDirectory. В принципе можно было поднять роутер на Windows, но использовать...
Подробнее...
Протоколы интернет
Прародителем сети интернет была сеть ARPANET. Первоначально её разработка финансировалась Управлением перспективного планирования (Advanced Research Projects Agency, или ARPA). Проект стартовал...
Подробнее...
Вирусы. Что это и как с...
Организация защиты компьютера примерно схожа с организацией зашиты частного дома, т.е. сперва укрепляются стены, заводится собака и возводится забор. В первую очередь при выходе пользователя в...
Подробнее...
ШРИФТ
Удобочитаемость шрифта.Удобочитаемость является одним из важнейших достоинств хорошего шрифта. Это не только общая оценка пригодности его формы, но и показатель красоты. На удобочитаемость влияют...
Подробнее...
Cмешение цветов с помощью...
Привет всем. Сегодня мы будем писать програмку, которая может размыть картинку.Бросай на форму Timage и Tbutton имена оставь по умолчанию, создавай событие button1.click
Подробнее...
Бесплатный хостинг
Для начала я попробую немного отойти от технических деталей и рассмотреть вопрос «бесплатного» хостинга под углом экономического восприятия этого явления в интернете.И вот к каким интересным...
Подробнее...
10 способов проверки среды...
Служба Каталогов (Active Directory Services) — действующий стандарт для инициализации учётных записей, базового системного управления и DNS-идентификации в большинстве сред. Ведение отчётности...
Подробнее...
Динамика украинских...
Первое полугодие 2007 характеризуется позитивной динамикой развития домена .UA – сообщает администратор домена .UA ООО «Хостмастер». За период с 01.01.07 по 01.07.07 количество...
Подробнее...