Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6619
Комментариев на сайте: 650
Новый юзер: Dysonetn



Последние комментарии
c
dealrattKi прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Это действительно радует меня. --- Бесподобное сообщение скачать fifa, скачать фифа а также [url=http://15fifa.ru/novosti-fifa-15]fifa 15 последние новости[/url] скачать фифа
intatryadebra прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Revival RO is best free ro populair ragnarok online private server founded in 2017 2018. Revival pvp big free Ragnarok server is an online exciting free MMORPG called ragnarok online, it a fun server for MMORPG gamers in ASIA. This is a top 10 ragnarok online private server thats high on the list and top ranking with massive players online. We have many players from Asia like Malaysia, Indonesia, Philippines, Thailand, Singapore, China, Hong Kong All these players are here to play free private ragnarok online server and battle players all around the world. They want to collect the best items and gear to be strongest in War of Emperium, War of Emperium are guild wars in this free RO Server. You can play this game on android phone or tablet or pc client. Enjoy And have fun. ragnarok online server http://bit.ly/2tKyawS

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

Вы, возможно, видели нестандартные дельфийские компоненты, позволяющие сделать лог системы. Сейчас мы самостоятельно реализуем что-нибудь не хуже. Прежде всего, где хранится эта самая системная инфа? В Реестре, куда мы сможем залезть, добавив модуль 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 getVolumeInformation(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.description','keyboard.typ')); 
WriteLn(F,'Мышь: '+getDevice('boot.description','mouse.drv')); 
WriteLn(F,'Дисплей: '+getDevice('boot.description','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 кило. А если бы мы создали "нормальную" программу с формой, размер был бы в два-три раза больше.

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 24 Ноября 2013
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.