Навигация
  Главня
Статьи
-Сеть
--Безопасность
-Графика
--Photoshop
--Corel Draw
--Illustrator
-ОС
--Windows
--Linux
--Unix
-SEO
-Дизайн
--Web-Design
-Разное
-Программирование
--Delphy
--C/C++
--.NET
--PHP
--Pascal
--Perl
--Visual Basic
--Ассемблер
--Java
--Java Script
--ASP
Книги

Карта Сайта
Наши Сайты
Обратная связь
Новое на сайте
Статьи про любовь

 
Вход
 
Логин
Пароль
 

 
Найти
 

 
Партнёры
 

 
Статистика
 

 
Популярное
 

 
Календарь
 
«    Май 2013    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

 
Архив
  Сентябрь 2008 (4)
Июнь 2008 (4)
Май 2008 (12)
Апрель 2008 (49)
Март 2008 (51)
Февраль 2008 (73)
Январь 2008 (40)
Декабрь 2007 (58)
Ноябрь 2007 (61)
Октябрь 2007 (51)
Сентябрь 2007 (82)

 
Реклама
  Кулинарные рецепты на Cook-room.com - с пошаговыми фото

 
Казино
 

Интернет-казино Grand Casino произвело фурор в игорном мире. Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее. Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.

   

Статьи » Программирование » Delphi » Как узнать информацию о системе

[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]
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » Программирование » Delphi » Как узнать информацию о системе
Статьи по теме:
  • Счетчик посещений на Delphi
  • Объектное программирование
  • Перенаправление stdout в область памяти (или файл)
  • Утилиты Windows XP
  • Delphi. Работа с реестром
  •  (голосов: 0)
    Просмотров: 2148 :: Комментарии: (0) :: :: Напечатать

    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
     
    Design by PODPOLE