Новости Программирование Разное
При видеорекламе
обновить страницу
1-3 раза
AllLib. Набор исходников для расширения функционала стандартных библиотек Delphi, включая поддержку криптографии (включает исходники Utils.exe).
Utils. Утилита с основными полезными в работе функциями (просмотр графики, конвертация, SQL, окна, криптография и др.), без инсталляции, с поддержкой командной строки, демонстрирует использование AllLib.
Скачать текущие версии от 09.08.2010:
- AllLib - исправлены ошибки и внесены изменения, не добавленные в общую справку ниже, компилировалась в Delphi 5, 7;
- AllLib: криптография - дополнительные исходники для работы с CryptoAPI, КриптоПро, Сигнал-КОМ Message-PRO;
- Utils - содержит заголовки библиотеки AllLib, скомпилированную Utils.exe, а также утилиту Misc.exe с различными прочими функциями;
включает аналоги WinCrypt.h (GWinCryp.pas), КриптоПро WinCryptEx.h (GWinCPro.pas),
Сигнал-КОМ MesPro.h (GMsgPro.pas).
Вопросы и замечания: email, ICQ: 11085892, Skype: vlad.stepanov1, архив форума.
English description of AllLib, Utils.
AllLib. Обзор функционала.
1. Общие функции (типы, строки, варианты, память, списки, таблицы, потоки,
файлы, ini, реестр, многопоточность, исключения, языки):
- конвертация типов: конвертация строк и вариантов в типы и наоборот с
автораспознаванием многих форматов независимо от настроек разделителей Windows
(включая сложные форматы вроде '1 443,45', '12=34', '1111011b', '30-JAN-2004',
'30/01/04 11:12:55.945', 'Wed Mar 13 19:15:06 UTC+0300 2002'), варианты функций
без порождения исключений и использования SysUtils и с порождением исключений;
- кодирование: кодирование и декодирование (строки C++/JScript и Pascal,
Base64, HTML, URLEncode/URLDecode, KOI, ISO, Wide формата Windows NT и с
нечетным количеством байт, XOR и др.), в том числе поддерживается быстрое
кодирование длинных строк; разбор Delphi-форм DFM, включая бинарные; проверка
соответствия маске и извлечение по маске (маски - с символами '?' и '*');
увеличение, уменьшение и округление даты до секунд, минут, часов, дней, месяцев,
лет; поиск и замена в строке, добавление и извлечение строки из массива,
хранимого в строке; извлечение строки текста при разных вариантах перевода
строки, выравнивание колонок текста, функции парсинга выражений без
использования объектов;
- память: контроль утечек объектов и возможность контроля утечек памяти,
дескрипторов; работа со списком и списком списков без SysUtils и использования
объектов с заданием емкости, работа со строкой с заданием емкости и
перераспределением памяти при превышении емкости, наращиваемой шагами; буфер в
строку, изменение регистра и регистронезависимое сравнение блоков памяти,
перемещение с перекрытием;
- списки: индексируемые списки и таблицы без изменения порядка элементов с
построением индекса при первой попытке поиска, поиск в таблице по любому набору
колонок (списки и таблицы - указателей, строк, вариантов); иерархия без VCL;
- потоки: обертки потоков с кэшированием чтения и записи, возможностью чтения
следующего фрагмента данных без смещения позиции благодаря кэшу, извлечением
следующей строки до перевод строки;
- файлы: список файлов, копирование и удаление по маске с возможностью
просмотра подкаталогов, вызовом прогресса; собственное имя DLL, получение версии
библиотеки; поиск файла в %PATH%, разбор командной строки; работа с ярлыками,
Map-файлами; простые функции файл в строку и строка в файл; простая функция
записи в лог или на консоль с однозначно интерпретируемым форматом лога,
поддержка отладки во многих функциях и объектах библиотеки; диалоги выбора файла
и папки без VCL и SysUtils; вставка и извлечение из буфера обмена с правильной
обработкой русских букв;
- ini: ini в памяти или потоке, возможность работы с секцией без имени,
значениями параметров любой длины, быстрый поиск, сохранение комментариев;
быстрое чтение иерархической конфигурации в многомерный массив вариантов;
- реестр: реестр с корректной работой при ограниченных правах доступа,
экспортом, импортом и удалением ключа с подразделами;
- многопоточность: threadvar с инициализацией и завершением, правильной работой
в Delphi 3, поддержка многопоточности всем кодом, инициализация и
автоосвобождение объектов без увеличения кода приложения в случае подключения
библиотеки без обращений к объекту библиотеки из приложения, работа с
критическими секциями без SysUtils;
- исключения: отдельные модули сокращенных аналогов SysUtils для небольших
приложений; объекты исключений с именем процедуры и кодом ошибки, в том числе
поддержкой определения текста по коду ошибки Windows; список информации об
исключениях;
- языки: русские и английские языковые константы, динамический выбор языка;
чтение текущего языка системы; сумма прописью для разных валют на русском и
английском с torry.ru без необходимости ini-файла; проверка ключевания счета;
- удобные функции и др.: прочие функции для конвертации типов, удобной работы
со строками вроде IIf, IfEmpty, AddPrefix, AddPostfix, JoinStr, вариантами,
файлами.
2. Специализированные функции (окна, база, интернет, COM, интерпретация скриптов,
процессы, сжатие, привязка к компьютеру, графика):
- диалоги: диалоги без VCL, SysUtils и ресурсов - функции ввода строки, пароля,
логина и пароля, просмотра и редактирование текста с выбором кодировки, ввода
имени файла или выбора каталога, ввода случайной последовательности (функции
взывают дочерние объекты от единого абстрактного объекта диалога без VCL);
добавление иконки в системную область панели задач; получение списка окон
верхнего уровня или иерархии с дочерними окнами; скроллирование в конец и поиск
в TRichEdit в VCL, быстрое получение и обновление списка TListView и иерархии
TTreeView из списка и иерархии в памяти;
- базы данных: работа с базами данных через ADO без VCL, загрузка выборки
таблиц в индексируемую таблицу вариантов в памяти и обновление выборки таблицы в
базе по содержимому таблицы в памяти при заданных ключевых полях, в том числе с
корректной работой с BLOB-полями для MS-SQL, Sybase, Oracle (с поддержкой ISO
Cyrillic), Interbase; получение версии ADO; корректное чтение через ADO структуры базы
(включая колонки индексов) для MS-SQL, Access, Sybase, Oracle, Interbase, dBase;
- интернет: работа с сокетами для сервера и клиента без VCL и SysUtils; отсылка
HTTP- или HTTPS-запроса с получением ответа через WinInet; подключение к
интернету, выход из Offline-режима браузера, получение собственных IP-адресов,
разбор HTTP-ссылки; обертки ASP- и HTML-объектов с общим предком, делающим
однотипным доступ к параметрам (полям) формы из сервера и клиента; общий метод
чтения из ASP параметров сертификата CryptoAPI/Крипто-Про и Сигнал-КОМ Inter-PRO
Client; отсылка почты простой функцией;
- скрипты: поддержка интерфейса IActiveScript устанавливаемого с браузером
интерпретатора JScript, VBScript (напрямую, без использования ScriptControl);
поддержка интерфейса IDispatch (без необходимости написания и регистрации ocx),
например, для встраивания COM-объекта в пространство имен IActiveScript для
обращения к нему из скрипта; внутренний парсер функции строки обращения к
COM-объекту с параметрами; получение GUID;
- процессы: список имен и идентификаторов процессов (с поддержкой Windows 95/NT+);
запуск задачи с ожиданием завершения или ожиданием создания ею первого окна,
открытие документа (также есть возможность ожидания заданного промежутка времени
с обработкой событий без VCL или ожидания появления файла); объекты межзадачного
обмена с помощью сообщений Windows и прямой записи в память процесса; запуск
приложения от имени пользователя; запуск и остановка сервиса, включая таймаут
ожидания зависимых сервисов; запуск и остановка приложений COM+ в Component
Services;
- сжатие: сжатие и распаковка строки путем использования библиотеки Delphi ZLib
(без внешних dll); распаковка CAB-файла;
- привязка к компьютеру: привязка приложения к компьютеру, чтение напрямую из
оборудования идентификатора и серийного номера CPU (также корректное определение
частоты процессора), версии, даты, производителя и серийного номера BIOS,
модели, версии и серийного номера контроллера HDD (возможно чтение для первых
четырех жестки дисков) - всего используется порядка 14 различных способов
обращении к оборудованию, благодаря чему поддерживаются Windows 95/98/ME/NT/2000/XP/2003,
получение одинаковой информации при различных правах пользователя, включая
гостевые; также чтение системной информации PCI-драйверах, версии Windows и
Internet Explorer, доступных шрифтах;
- графика: поддержка загрузки GIF, PCX - позаимствованы с torry.ru, сделана
динамическая инициализация; поддержка загрузки других форматов графики, в том
числе TIF, PNG с помощью GDI+ (сделана динамически, т.к. библиотека может
отсутствовать в старых Windows); функция изменения яркости картинки;
- финансовые и др.: прочие специализированные функции и классы конвертации, в
том числе в и из формата 1С, поддержки HTTP-транспорта, получения информации об
автозагружаемых процессах Windows.
3. Криптография (поддержка библиотек асимметричной шифрации и ЭЦП, симметричная
шифрация и CRC):
- CryptoAPI/Крипто-Про: асимметричная шифрация и дешифрация, подпись и
проверка ЭЦП с использованием CryptoAPI RSA, RSA-128 и Крипто-Про ГОСТ 28147-89,
ГОСТ Р 34.11/34.10-94/2001 с возможностью кэширования ключей (прямое обращение к
CryptoAPI), доступна симметричная шифрация (на сессионном ключе) и асимметричная
шифрация на секретном и открытом ключе, секретном ключе и сертификате,
автораспознавание Base64 и PEM-форматов запроса и сертификата, возможность
хранения ключей Крипто-Про в файлах с временным импортом в реестр на период
криптооперации и экспортом после нее; генерация ключей, формирование запросов на
сертификат и установка сертификатов без и с использованием xenroll.dll, выпуск
или отзыв сертификата по запросу в Microsoft Certification Authority, проверка
действительности сертификата; поиск сертификата в хранилище по набору
параметров, чтение его полей, добавление сертификата в хранилище, диалоги
просмотра и выбора сертификатов; список установленных в системе типов
криптопровайдеров, их имен и параметров, поддерживаемых алгоритмов и алгоритмов
по умолчанию;
- Сигнал-КОМ: асимметричная шифрация и дешифрация, подпись и проверка ЭЦП с
использованием trial-версии Сигнал-КОМ Message-PRO RSA и СКЗИ ГОСТ 28147-89,
ГОСТ Р 34.11/34.10-94/2001 с возможностью кэширования ключей; значения полей
сертификата и просмотр содержимого сертификата аналогично диалогу в Сигнал-КОМ
Inter-PRO; эмуляция диалога генерации случайной последовательности при ее
отсутствии для ранних версий mespro.dll (аналогично имеющемуся в поздних);
- симметричное шифрование и CRC, хэширование: симметричная шифрация и дешифрация по
алгоритмам Blowfish, RC6, GOST, контрольная сумма CRC32, хэширование MD5, SHA1, SHA256 -
позаимствованы с torry.ru, добавлена возможность кэширования ключей шифрования, чтобы не проводить
повторную инициализацию, занимающую некоторое время, добавлена возможность
поточного шифрования; формирование и однозначный разбор строки X500 с поддержкой
имен параметров, используемых в CryptoAPI и Message-PRO.
Особенности библиотек:
- совместимость с Delphi 3 - Delphi 7, Borland Delphi Studio 2006
(преимущественно тестируется на Delphi 5);
- при подключении модулей в код EXE добавляются только те функции и объекты,
которые реально вызываются в программе;
- динамическое подключение функций различных API, если они могут отсутствовать в
Windows 95 или Windows NT, при этом для последних, по возможности, вызывается
альтернативная функция, иногда недокументированная;
- все глобальные описания и объекты многопоточны или чаще создается отдельная
копия глобального объекта в каждом потоке;
- библиотеки не требуют установки компонентов и прописывания путей в Delphi, при
компиляции нет Warnings и Hints, публичные объекты и функции откомментированы на
русском.
AllLib. Краткая справка.
I. Общие функции (типы, строки, варианты, память, списки, таблицы, потоки,
файлы, ini, реестр, многопоточность, исключения, языки).
1. Конвертация. Конвертация строк и вариантов в типы и наоборот с автораспознаванием многих
форматов независимо от настроек разделителей Windows, варианты функций без
порождения исключений и использования SysUtils и с порождением исключений:
- конвертация Boolean в строку и строки в Boolean, примеры распознаваемых
значений: 'True', 'Нет', '0', '+', 'ON', 'ВЫКЛ', варианты без порождения
исключений и использования SysUtils (модуль GGlbUtil.pas функции BoolToStr,
BoolToStrFormat, StrToBoolConv, StrToBoolDef), с порождением исключений при
ошибках конвертации (модуль GDifUtil.pas функция StrToBool);
- конвертация Integer в строку и строки в Integer, примеры распознаваемых
значений: '-15', '123.', '4294967295', '$7B', '-7Bh', '1111011b', варианты без
порождения исключений и использования SysUtils (модуль GGlbUtil.pas функции
IntToStrStd, IntToStrFormat, StrToIntConv, StrToIntDef), с порождением
исключений при ошибках конвертации (модуль GDifUtil.pas функция StrToIntStd);
конвертация числа в заданную систему счисления и наоборот (модуль GGlbUtil.pas
функции IntToSNum, SNumToIntConv, SNumToIntDef; модуль GDifUtil.pas функция
SNumToInt); суммирование чисел любой длины в строках (модуль GGlbUtil.pas,
функции SummDec, SummHex);
- конвертация Extended, Currency в строку и строки в Extended, Currency, примеры
распознаваемых значений: '2356.29', '1 443,45', '12=34', '-1.23e15' варианты без
порождения исключений и использования SysUtils (модуль GGlbUtil.pas функции
FloatToStrStd, CurrToStrStd, FloatToStrFormat, CurrToStrFormat, StrToFloatConv,
StrToCurrConv, StrToFloatDef, StrToCurrDef), с порождением исключений при
ошибках конвертации (модуль GDifUtil.pas функции StrToFloatStd, StrToCurrStd);
округление в разлиную сторону, до указанного разряда (модуль GGlbUtil.pas,
функции RoundMode, FloatRoundMode, RoundCurrMode, CurrRoundMode, RoundToDigit);
- конвертация TDateTime в строку и строки в TDateTime с сохранением миллисекунд,
примеры распознаваемых значений: '30.1.2004', '30/01/04 11:12:34.501',
'30-JAN-2004', '1.30.2004', ' 04:41:09 p.m.', '13.3.2002 г. 1:11', 'FEB,17 2000
19:55:59', 'Oct 27 13:11:25 1999 GMT', 'Wed Mar 13 19:15:06 UTC+0300 2002',
'31012002121958', варианты без порождения исключений и использования SysUtils
(модуль GGlbUtil.pas функции DateTimeToStrStd, DateTimeToStrFormat,
StrToDateTimeConv, StrToDateTimeFormatConv, StrToDateTimeDef,
StrToDateTimeFormatDef), с порождением исключений при ошибках конвертации
(модуль GDifUtil.pas функции StrToDateTimeStd, StrToDateTimeFormat);
- конвертация Variant в Boolean, Integer, Extended, Currency, TDateTime с
распознаванием вышеперечисленных значений в случае хранения в варианте строки
(модуль GVariant.pas функции VarToBoolConv, VarToBoolDef, VarToIntConv,
VarToIntDef, VarToFloatConv, VarToFloatDef, VarToCurrConv, VarToCurrDef,
VarToDateTimeConv, VarToDateTimeDef; модуль GDifUtil.pas функции VarToBool,
VarToInt, VarToFloat, VarToCurr, VarToDateTime), базовый тип вариант и простые
функции конвертации варианта к типу с нулевым или пустым значением по умолчанию,
приведение строки и варианта к указанному типу (модуль GVariant.pas функции
VarBaseType, ToBool, ToInt, ToFlat, ToCurr, ToDateTime, ToStr, VarToTypeConv,
VarToTypeDef, VarToTypeCast; модуль GDifUtil.pas функции StrToType, VarToType);
- типы с возможностью задания значения, соответствующего Null и их конвертация в
строку, вариант и из строки, варианта (модуль GGlbUtil.pas типы TNullBool,
TNullInt, TNullFloat, TNullCurr, TNullDateTime, TNullStr, функции NullBoolToStr,
StrToNullBoolConv, StrToNullBoolDef, NullIntToStr, StrToNullIntConv,
StrToNullIntDef, NullFloatToStr, NullCurrToStr, StrToNullFloatConv,
StrToNullCurrConv, StrToNullFloatDef, StrToNullCurrDef; модуль GVariant.pas
функции NullBoolToVar, VarToNullBoolConv, VarToNullBoolDef, NullIntToVar,
VarToNullIntConv, VarToNullIntDef, NullFloatToVar, NullCurrToVar,
VarToNullFloatConv, VarToNullCurrConv, VarToNullFloatDef, VarToNullCurrDef;
модуль GDifUtil.pas функции VarToNullBool, VarToNullInt, VarToNullFloat,
VarToNullCurr, VarToNullDateTime).
2. Кодирование. Кодирование и декодирование, в том числе поддерживается быстрое кодирование
длинных строк, разбор DFM, проверка соответствия и извлечение по маске,
округление дат, поиск и замена, массив в строке, парсинг и работа с текстом:
- кодирование и декодирование в и из строк стиля C++/JScript без обрамляющих
кавычек, строк стиля Pascal, в и из Base64 (представляющий 3 байта в виде 4
текстовых символов), HEX, формата значений HTML, формата параметров URL, в
DOS-кодировку OEM CP-866 и из нее в Windows-кодировку ANSI Windows-1251 с
помощью языкового драйвера, а также с помощью фиксированной таблицы
перекодировки независимо от Locality системы, в и из KOI8-R, ISO-8859-5 (ISO
Cyrillic) в формате таблиц перекодировки Oracle, преобразование WideString
формата Windows NT в строку с правильным распознаванием русских букв,
преобразование варианта с типом WideString с нечетным количеством байт
(встречается в ASP) в строку и из строки, XOR строки (модуль GGlbUtil.pas
функции CStr, JStr, CPPToStr,
StrToPas, PasToStrConv, PasToStrDef, EncodeStr, DecodeStr, EncodeStrHex,
DecodeStrHex, HStr, FromHStr, URLEncode, URLDecode, DosToWindows, WindowsToDos,
RusDosToWin, RusWinToDos, KoiToWindows, WindowsToKoi, IsoToWindows, WindowsToIso,
ChangeEncoding, WideToStr, WideToByteStr, ByteStrToWide, ByteStrWideCorrect;
модуль GVariant.pas ToByteStr, FromByteStr);
- проверка соответствия маске и извлечение по маске, маски - с символами '?' и '*',
поиск и замена в строке (модуль GGlbUtil.pas функции IsStrMatchMask,
SimpleMaskStr, ExtractStrBySimpleMask, FindStr, ReplaceStr); увеличение,
уменьшение и округление даты до секунд, минут, часов, дней, месяцев, лет,
сравнение вариантов (модуль GGlbUtil.pas функции IncDateTime, RoundDateTime;
модуль GVariant.pas функция CompareVarMode); добавление и извлечение строки из
массива, хранимого в строке в разных форматах, извлечение строки текста при
разных вариантах перевода строки, выравнивание колонок текста (модуль
GGlbUtil.pas функции AddValueToArray, GetValueFromArray, GetValueFromBuf,
AddIntToArray, GetIntFromArray, AddStrToArray, GetStrFromArray,
GetStrFromArrayPos, StrFromDelimitedPos, StrFromDelimited, GetCSV, AddCSV,
LineFromBuf, GetLine; модуль GDifUtil.pas функция NormalizeColumns);
- простой парсинг строки без использования объекта - пропуск пробелов, символов
из набора, указанной строки, извлечение слова из символов набора, извлечение
строки в кавычках (модуль GGlbUtil.pas функции ParseSpace, ParseChars,
ParseValue, ParseWord, ParseWordInMarks);
- преобразование бинарной Delphi-формы DFM в текстовую, извлечение элементов
формы, извлечение строковых констант из форм и исходников Delphi, преобразование
двоичных данных в описание массива Delphi для подключения к проекту без
использования ресурсов (модуль GDifUtil.pas, функции DFMFileToStr, DFMToFormInfo,
DFMToDFMItems, PasSourceGetStrConsts, StrToPasUnit).
3. Память. Контроль утечек объектов и возможность контроля утечек памяти, дескрипторов;
работа со списком и списком списков без SysUtils и использования объектов с
заданием емкости, работа со строкой с заданием емкости и перераспределением
памяти при превышении емкости, наращиваемой шагами, операции с указателями:
- контроль утечек объектов и возможность контроля утечек памяти, дескрипторов -
все объекты библиотек порождены от TObjectStd (описан в модуле GGlbUtil.pas),
для стандартных объектов есть аналоги TListStd, TStringsStd, TStringListStd,
TMemoryStreamStd, TFileStreamStd, TPersistentStd, TIniFileStd, TRegistryStd,
TAutoObjectStd (описаны в модуле GDifUtil.pas), TFormStd, TBitmapStd,
TJPEGImageStd, TPictureStd (описаны в модуле GVCLUtil.pas), счетчики созданий и освобождений записываются в
SysCounters, при выходе из приложения в случае
ненулевых значений с помощью SysDebugWrite делается запись в лог %TEMP%\<имя_модуля>ГГГГММ.log,
также в счетчиках можно записывать информацию о резервировании и освобождении
памяти с помощью GetMemDbg, FreeMemDbg (описаны в модуле GGlbUtil.pas), резервировании и освобождении
дескрипторов;
- задание емкости, доступ, добавление, удаление, поиск элементов в списке без SysUtils (модуль GGlbUtil.pas
функции PtrArraySetCapacity, PtrArrayGet,
PtrArraySet, PtrArrayAdd, PtrArrayInsert, PtrArrayDelete, PtrArrayRemove,
PtrArrayIndexOfItem), в списке списков (модуль GGlbUtil.pas функции BufsInfo,
AddBuf, InsertBuf, DeleteBuf, RemoveBuf, IndexOfBuf, FreeBufs), работа со
строкой с заданием емкости (модуль GGlbUtil.pas ArrayStrAdd, ArrayStrInsert,
ArrayStrDelete, ArrayStrIndexOf);
- буфер в строку и наоборот, изменение регистра и регистронезависимое сравнение
блока памяти, перемещение с перекрытием (модуль GGlbUtil.pas функции BufToStr,
StrToBuf, CaseChangeMem, CaseChangeMemWide, MoveRight, MoveLeft).
4. Списки. Индексируемые списки и таблицы без изменения порядка элементов с построением
индекса при первой попытке поиска, поиск в таблице по любому набору колонок
(списки и таблицы - указателей, строк, вариантов); иерархия без VCL:
- таблица указателей, индексируемый список и таблица указателей, список
объектов, таблица строк, индексируемый список и таблица строк, обертка для
доступа к индексируемому списку как к TStrings, список и таблица вариантов,
индексируемый список и таблица вариантов (модуль GDifUtil.pas объекты TLists,
TIndexedList, TIndexedLists, TObjList, TStringsList, TIndexedStrings,
TIndexedStringsList, TIndexedStringList, TVariants, TVariantsList,
TIndexedVariants, TIndexedVariantsList), в индексируемых списках индекс строится
при первом обращении к IndexOf без изменения порядка элементов, свойство
Sorted
возвращает отсортированные элементы по их номерам, для таблиц в свойстве
IndexedColCount задается количество, а в IndexedCols - индексы колонок индекса,
ActiveIndex - задает номер активного индекса (можно построить несколько
индексов разными наборами колонок), в индексируемых списках и таблицах строк и
вариантов свойство CompareMode задает режим сравнения строк (с учетом регистра,
без учета, без учета с использованием языкового драйвера, с тримированием
пробелов), экспорт и импорт таблицы в строку с помощью свойства ExportStr;
шаблоны списка и индексированного списка для произвольного типа элемента (модуль
GDifUtil.pas классы TUniversalsInfo,
TIndexedUniversalsInfo); задание количества элементов в TStrings, список строк в
строку и наоборот с указанием разделителя (модуль GDifUtil.pas функции SetStringsCount, StringsToStr,
StrToStrings);
- добавление, вставка и удаление элемента-указателя или строкового элемента
иерархии (модуль GGlbUtil.pas метод HierarchyAdd, HierarchyInsert,
HierarchyDelete, StrHierarchyAdd, StrHierarchyInsert, StrHierarchyDelete),
иерархический тип представляет собой указатель на структуру, первоначально
равный nil и создаваемый при добавлении первого элемента, полностью
освобождаемый при удалении последнего, структура содержит массив данного уровня
с указанием емкости, наращиваемой шагами по мере ее достижения, в массиве имеются
ссылки на дочерние элементы, представляющие собой аналогичные структуры с
массивами дочерних элементов для данного и помнящие указатель на родительскую
структуру и индекс родительского элемента в ней, при добавлении и удалении
элементов функции обновляют все нужные поля изменяемых уровней, не требуют VCL и
SysUtils.
5. Потоки. Обертки потоков с кэшированием чтения и записи, возможностью чтения
следующего фрагмента данных без смещения позиции благодаря кэшу, извлечением
следующей строки до перевод строки:
- задание размера кэша потока, чтение блока данных из потока с кэшированием для
уменьшения реальных обращений к потоку, "подсматривание" следующего блока потока
без смещения логической позиции в кэше, проверка, достигнут ли конец потока,
запись в поток с кэшированием, физическая запись оставшихся в кэше данных
(модуль GDifUtil.pas методы StreamCacheInit, StreamRead, StreamReadBuffer,
StreamPreRead, StreamIsEnd, StreamWrite, StreamWriteBuffer, StreamWriteFlush);
- чтение и запись строки текста, логическая позиция в кэше смещается за #13, или
#10, или #13#10, или #10#13, также класс обертки над файловым потоком,
производящий открытие файла при первом реальном чтении или записи потока, что
позволяет избегать создания пустых файлов (модуль GDifUtil.pas методы StreamReadLn, StreamWriteLn,
класс TDeferredFileStream).
6. Файлы. Список файлов, копирование и удаление по маске подкаталогами и прогрессом,
собственное имя DLL, чтение версий библиотек, полное имя запускаемого файла по
краткому, запись в лог, на консоль и поддержка отладки многими функциями, разбор
командной строки, диалоги выбора файла и папки без VCL, работа с Map-файлами,
текстом буфера обмена с корректным чтением русских букв, работа с ярлыками:
- список файлов, копирование и удаление по маске с возможностью просмотра или
удаления подкаталогов, вызовом прогресса, класс кэширования файлов с поддержкой многопоточности (модуль
GDifUtil.pas функции FileList, IsFilesExist, CopyFile,
CopyFiles, DeleteDir, класс TFileOperations); собственное имя приложения или DLL,
версия библиотеки, версия в строку и наоборот, сравнение версий, простые функции
файл в строку и строка в файл, дополнение имени файла путем, имени программы или
библиотеки путем и расширением с поиском в %PATH%, создание каталога с
несуществующими каталогами верхнего уровня, диалоги выбора имени файла и
каталога без VCL и SysUtils (модуль GGlbUtil.pas функции GetModuleName, LibVer,
LibVerInfo, VerToStr, StrToVer, CompareVer, FileToStr, FileToStrCheckExists,
StrToFile, StrToFileAppend, ResolveFileName, ResolveProgram, ForceDirs,
FileListDlg, BrowseDirectoryStd, FileDlg);
- простая функция записи в отладочный лог или на консоль - W(Args: array of
const), по умолчанию лог выводится на консоль и в файл %TEMP%\<имя_модуля>ГГГГММ.log,
для отключения вывода на консоль нужно задать режима вывода логов - DebugInfo^.Mode
:= DebugInfo^.Mode + [dmNoFile], записи в лог делаются в однозначно
интерпретируемом формате - в виде строк стиля C++ без кавычек, разделенных
табуляциями, в файле в первой колонке пишется дата с миллисекундами и количество
миллисекунд с предыдущей записи; многие функции и объекты библиотеки могут
делать записи в отладочный лог при задании DebugInfo^.DebuggingClasses := '*'
для записи в лог всеми функциями или задании строки разделенных пробелом слов,
например 'ERR WAPI RST CAPI MPRO' - для записи ошибок, параметров вызовов
Windows API, SQL-запросов через ADO Recordset, вызовов CryptoAPI/Крипто-Про и
вызовов Сигнал-КОМ Message-PRO; для блокировки записи в лог и исключения кода
записи из приложения можно задать директиву {$DEFINE NODEBUG}; записывающие в
лог функции проверяют включенность режима записи с помощью IsDebug, например, if
IsDebug('ERR') then W(['ERR', 'Сбой при инициализации приложения']), как видно,
определяющее тип записи слово обычно указывается в первом параметре функции W,
хотя это не обязательно (упомянутые функции определены в модуле GGlbUtil.pas),
по умолчанию отладка отключена, но может быть при запуске включена в случае
задания в командной строке параметра /DebuggingClasses=* или с перечислением
нужных типов отладки; возможны настройки отладки с выводом отдельных диалогов
сообщений или вывод сообщений через внешнюю утилиту, например, для подавления
вывода ненужных, для реализации подобной утилиты предусмотрен пример функции,
выводящий все сообщения (модуль GDifUtil.pas функция DebugRun); для управления
набором логов также существует специальный класс (модуль GDifUtil.pas класс TLogging);
- излечение имени и параметров программы из указанной командной строки, проверка
наличия параметра, чтение значения параметра командной строки, отделенного от
названия двоеточием или равно, замена в строке переменных окружения вроде %windir% на их значения (модуль
GGlbUtil.pas функции GetProgramName,
GetProgramParams, CmdPrmExists, GetCmdPrm, ExpandEnvironmentStr);
- запись разделяемого приложениями Map-файла в памяти из строки и чтение в
строку, чтение буфера обмена в строку с правильным представлением русских букв в Windows NT и запись строки
в буфер обмена без SysUtils, получение имени файла,
на который ссылается ярлык, и создание ярлыка (модуль GGlbUtil.pas функции StrToMapFile, MapFileToStr,
ClipboardToStr, StrToClipboard; модуль GDifUtil.pas
функции LinkToInfo, InfoToLink).
7. Ini. Ini в памяти или потоке, возможность работы с секцией без имени, значениями
параметров любой длины; быстрое чтение иерархической конфигурации в многомерный
массив вариантов:
- класс поддержки Ini с загрузкой и сохранением в поток TStreamIni, через
свойство IniStr доступны загрузка и сохранение в строку, для доступа к секции
без имени используется пустая строка в качестве имени секции, класс сохраняет
комментарии, также имеется класс TStreamBinIni для представления Ini в двоичном
формате, при этом значения параметров могут содержать любые символы, включая
специальные, функции IniToBinIni и BinIniToIni конвертируют Ini в и из двоичного
формата (упомянутые функции и классы определены в модуле GDifUtil.pas);
- импорт файла со строками формата индекс1.индекс2.индекс3 и т.д., символ '=',
значение - в многомерный массив вариантов, где элементы получают указанные
индексы (модуль GDifUtil.pas функция ImportVarArray).
8. Реестр. Реестр с корректной работой при ограниченных правах доступа, экспортом,
импортом и удалением ключа с подразделами:
- класс работы с реестром с корректной работой при ограниченных правах доступа и
поддержкой типа массива строк rdMultiString, экспорт ключа со всеми значениями и
вложенными ключами в строку и импорт из строки в реестр, простые функции для
чтения значения в реестре с конвертацией любого типа в строку и записи значения
в реестр, при этом задаются полные ссылки с именем корневого и остальных ключей
(модуль GDifUtil.pas класс TRegistryStd, функции RegistryKeyToStr,
StrToRegistryKey, RegistryGetValue, RegistrySetValue);
- открытие, создание ключа, удаление ключа с вложенными ключами (работающее в
том числе в Windows 9x), чтение значения в строку, в целое, запись, разделение
имени значения в реестре с ключами, включая корневой, на составляющие, чтение и
запись значения в реестре с кэшированием (модуль GDifUtil.pas функции RegistryOpenKey,
RegistryCreateKey, RegistryDeleteKey, RegistryReadValue,
RegistryReadValueInt, RegistryWriteValue, RegistryNameSplit, RegistryGetCached,
RegistrySetCached).
9. Многопоточность. Threadvar с инициализацией и завершением, правильной работой
в Delphi 3, поддержка многопоточности всем кодом, инициализация и автоосвобождение объектов
без увеличения кода приложения в случае подключения библиотеки без обращений к
объекту библиотеки из приложения, работа с критическими секциями без SysUtils:
- все библиотеки выполнены так, что при их подключении размер EXE вырастает
только на объем вызываемых из них функций и объектов; при этом в библиотеках
есть глобальные объекты, которые освобождаются автоматически при выгрузке
приложения; чтобы данные объекты при отсутствии к ним обращений в EXE не
включались в код, они инициализируются не из секции инициализации, а при первом
к ним обращении, например, функция WindowsAPI (модуль GDifUtil.pas) возвращает
объект доступа к различным динамически подключаемым функциям Windows API,
создавая его при первом к ней обращении; а для завершения объекта при выгрузке
приложения без включения его в секцию финализации описана единственная секция
финализации, вызывающая FinalizeProc (модуль GGlbUtil.pas), и при обращении к WindowsAPI
объект переопределяет FinalizeProc, на свою процедуру, освобождающую
объект и вызывающую по цепочке предыдущую FinalizeProc; аналогично реализуются
глобальные динамические переменные, например, строки, и глобально резервируемые
дескрипторы, при этом предусмотрены шаблоны для создания глобальной переменной,
объекта, дескриптора, разделяемого всеми потоками, и глобальной переменной,
объекта, дескриптора, имеющей отдельную копию в рамках данного потока (модуль
GGlbUtil.pas закомментированные шаблоны функций SomeThreadsSharedVar,
SomeThreadsSharedVarReset, SomeThreadsSharedObject, SomeThreadsSharedObjectReset,
SomeThreadsSharedHandle, SomeThreadsSharedHandleReset, SomeVar, SomeVarReset,
SomeObject, SomeObjectReset, SomeHandle, SomeHandleReset), для обеспечения
работы в многопоточной программы чаще всего создаются отдельные копии глобальных
объектов, переменных, дескрипторов в рамках каждого потока, например, функция
WindowsAPI возвратит разные экземпляры объектов в разных потоках, при
освобождении приложения все экземпляры автоматически освободятся, а в DLL также
при завершении каждого потока освобождается соответствующий экземпляр, для чего
используется стандартная функция DLLProc; вызовом функции, оканчивающейся на
Reset, можно освободить соответствующий глобальный объект, переменную,
дескриптор до завершения программы, при этом обращение к функции, возвращающей
объект, вновь его создаст; для исключения кода поддержки многопоточности в
однопоточных приложениях можно задать директиву компилятора {$DEFINE NOTHREADSAFE},
в этом случае, например, функция WindowsAPI во всех потоках (в
случае из наличия) вернет один и тот же объект;
- имеется функция для получения адреса локальной переменной потока с
резервированием ее при первом обращении (модуль GGlbUtil.pas, функция ThreadVarPtr),
в отличие от стандартных threadvar, зарезервированная таким
образом локальная переменная потока всегда инициализируется нулями и правильно
работает в Delphi 3; реализованы также вход в критическую секцию с ее безопасной
инициализацией при первом вызове, выход из критической секции, ее безопасное
удаление без использования SysUtils, также простые функции входа и выхода из
невложенной критической секции, класс критической секции с возможностью входа в
режиме чтения или чтения и записи, в данном потоке не должно быть попыток
вложенных вызовов на вход в данную секцию (модуль GGlbUtil.pas функции InitEnterCriticalSection,
StdLeaveCriticalSection, SafeDeleteCriticalSection,
EnterNonEnclosableCriticalSection, LeaveNonEnclosableCriticalSection, класс
TThreadNonEnclosableSynchronizer); захват мьютекса с ожиданием при конфликте в
течение заданного количества миллисекунд, освобождение мьютекса (модуль
GGlbUtil.pas функции LockMutex, UnlockMutex).
10. Исключения. Отдельные модули сокращенных аналогов SysUtils для небольших
приложений; объекты исключений с именем процедуры и кодом ошибки, в том числе поддержкой
определения текста по коду ошибки Windows; список информации об исключениях:
- отдельные модули сокращенных аналогов SysUtils для небольших приложений - с
единственным классом исключений и однотипным сообщением 'Runtime error XXX' с
заголовком 'Error at XXXXXXXX' для реализации приложений размером от 21 кб и с
единственным классом исключений при различных сообщениях об ошибках для
реализации приложений размером от 30 кб (модули GExcept.pas, GExcepts.pas);
- классы исключений с кодом ошибки и именем процедуры ошибки ENumProcError, для
создания следует использовать функцию NumProcErrorCreate, делающую запись в
отладочный лог, если он включен, а также аналог для ошибок Windows API
EWinAPIError, добавляющий в сообщение текстовую расшифровку ее кода, следует
создавать вызовом функции WinAPIErrorCreate (классы и функции определены в
модуле GDifUtil.pas), для определения текста ошибки Windows API по ее коду
используется функция WinErrorToStr (модуль GGlbUtil.pas); класс со списком
исключений TExceptionsInfo, добавление исключения в него производится вызовом
функции AddException (класс и функция определены в модуле GDifUtil.pas).
11. Языки. Русские и английские языковые константы, динамический выбор языка; чтение
текущего языка системы; сумма прописью для разных валют на русском и английском с
torry.ru без необходимости ini-файла; проверка ключевания счета:
- включены модули с русскоязычными, англоязычными и двуязычными значениями
строковых ресурсов, используемых стандартными библиотеками Delphi 3-7, Borland Delphi Studio 2006,
по умолчанию используются двуязычные, для использования русскоязычных можно задать
директиву компилятора {$DFINE RUS_LANG} или {$DFINE ENG_LANG} для англоязычных;
также все функции и классы библиотек хранят русский и английский варианты текста
ошибок и прочих сообщений в виде ресурсов (модуль GConsts.pas), при этом
описываются функции, выбирающие один из вариантов ресурсов в зависимости от
языка, который можно сменить динамически вызовом SetLangId или прочитать вызовом
LangId, предусмотрены коды EngLangId и RusLangId, по умолчанию используется
русский язык, но при наличии в параметрах запуска ключа /LangIdValue=ENG
используется английский (функции и константы описаны в GConsts.pas); директивы
{$DFINE
RUS_LANG} и {$DFINE ENG_LANG} позволяют включать в код только русские или только
английские строковые ресурсы; также имеются функции чтения и переключение
текущей раскладки клавиатуры в Windows, получения имени языка по идентификатору
(модуль GGlbUtil.pas функции GetActiveLanguage, SetActiveLanguage, VerLangName);
- сумма прописью для разных валют на русском и английском с torry.ru без
необходимости ini-файла, а также подставляемое по умолчанию содержимое ini-файла
настроек суммы прописью (модуль GDifUtil.pas AmtAsWords, AmtAsWordsIni,
DefAmtAsWordsIniStr); проверка ключевания счета (модуль GGlbUtil.pas GetAccountMode,
CheckAccount).
12. Удобные функции и др. Прочие функции для конвертации типов, удобной работы
со строками вроде IIf, IfEmpty, AddPrefix, AddPostfix, JoinStr, вариантами, файлами:
- удобные функции получения меньшего, большего, ограничение значение минимальным
и максимальным, возвращения одного из двух параметров, добавление префикса,
постфикса при непустой строке, объединение строк через разделитель при непустоте
обеих, добавления и удаления слэша в конце пути (GGlbUtil.pas GetMin, GetMax,
MinMax, IfEmpty, IIf, IIfBool, IIfInt, IIfFloat, IIfCurr, IIfDateTime, IIfVar,
AddPrefix, AddPostfix, JoinStr, AddPathSlash, DelPathSlash);
- сканирование строк текста вперед и назад от позиции, извлечение иерархии
разделов текста (модуль GGlbUtil.pas функции BufLineGo, GetBufLine, класс
TTextHierarchyBrowser);
- множество функций для работы с различными типами без SysUtils: переворачивание
буфера, создание, освобождение, изменение размера динамически резервируемого
буфера, сравнение блоков памяти с возможностью регистронезависимого сравнения
(модуль GGlbUtil.pas функции BufTurn, NewSizedBuf, FreeSizedBuf, SetSizedBufSize,
CompareMemMode); число в строку с указанием количества символов, суммирование,
вычитание, умножение, деление, представление в виде строки беззнаковых чисел,
удаление всех символов, кроме десятичных, шестнадцатеричных (модуль GGlbUtil.pas
функции IntToDec, UnsignedIntSum, UnsignedIntSubtract, UnsignedIntMultiply,
UnsignedIntDiv, UnsignedIntMod, UnsignedIntToStr, RemoveNonDec, RemoveNonHex);
суммирование, вычитание, умножение, деление, сравнение вещественного и денежного
типов с максимальной точностью в среде с настройкой сопроцессор на пониженную
точность, например, внутри ASP, конвертация между вещественными типами с
получением флага ошибки при переполнении, возведение в степень (модуль
GGlbUtil.pas SumFloat, SumCurr, SubtrFloat, SubtrCurr, MultFloat, MultCurr,
DivFloat, DivCurr, EqualFloat, EqualCurr, MoreFloat, MoreCurr, NotLessFloat,
NotLessCurr, FloatToIntDef, CurrToIntDef, FloatToCurrDef, FloatToDoubleDef,
DoubleToCurr, RaiseToPower); дополнение года веком при необходимости, проверки
существования даты, преобразование даты в TTimeStamp и из него, день недели,
сравнение дат с возможостью задания значения, зависимого от текущей (модуль
GGlbUtil.pas CorrectYear, CheckDate, DateTimeToTimeStampStd,
TimeStampToDateTimeStd, GetDayOfWeek, CompRelativeDateTime);
- множество функций работы со строками без SysUtils: PChar, PWideChar в строку с
возможностью задания максимальной длины, изменение регистра и сравнение строк в
указанном режиме, универсальное сравнение с использованием языкового драйвера и
фиксированной таблицы русских букв, поиск в промежутке строки и поиск назад,
проверка принадлежности символа множеству символов, задаваемому строкой вроде 'AZaz',
тримирование с указанием множества, поиск символа из множества, возврат строки
указанной длины, разделение символом из множества, проверка, что строка
начинается с подстроки, заканчивается на подстроку, равна подстроке или
начинается с подстроки плюс символа, окаймление строки, разбиение на группы с
добавлением в них префиксов, извлечение фамилии, имени, отчества, кодирование и
декодирование в схожем с Base64 формате, но регистронезависимом, кодирование и
декодирование с удалением невоспринимаемых Paradox символов, вариант кодирования
и декодирования XOR, выбрасывание символов, неудобных при преобразованиях
OEM-ANSI-OEM (модуль GGlbUtil.pas функции PCharToStr, PWideToStr, ChangeCase,
ChangeCaseWide, CompareStrMode, CompareWideStrMode, CompareStrUniversal, PosFrom,
PosBack, CharInRange, CharInRangeWide, TrimRange, TrimRangeWide, FindInRange,
MakeStr, DivByChar, IsStartingFromStr, StrEndTo, IsStrStartFrom, AddMarks,
StrToGroups, ExtractLastName, ExtractFirstName, ExtractMiddleName,
EncodeStrCaseInsensitive, DecodeStrCaseInsensitive, BinToPDoxPack,
BinToPDoxUnpack, XorEncodeStr, XorDecodeStr, StringLetter);
- множество функций по работе с вариантами: тип варианта по базовому типу и
наоборот, конвертация записи TVariant с возможностью хранить вариативное
значение, а также ее экспорт и импорт, усечение варианта в случае строкового
значения, преобразование варианта с использованием фиксированной русской
кодировки, вариант в строку с префиксом типа и из данной строки, строку в
вариант с поиском подходящего типа, экспорт и импорт варианта, тримирование,
если строковый, задание и чтение параметров IDispatch, форматирование вариантом
(GGlbUtil.pas функции VarTypeToVarBaseType, VarBaseTypeToVarType,
ConvertExtVariant, VarExtTypeToStr, StrToVarExtType, NullVarValueExport,
NullVarValueImport; модуль GVariant.pas функции VarTruncStr, VarToOle, V, ToV,
AsV, VarExport, VarImport, TrimVar, VarPrm, VarSet, VarRes; модуль GDifUtil.pas
функция VarFormat);
- множество функций и классов для работы со списками: определение следующей
емкости при ее росте, списки и таблицы в строку, сравнение набора строк, массив
PChar в список, добавление вариативных параметров в список вариантов (модуль
GGlbUtil.pas функция DetectCapacity; модуль GDifUtil.pas функции ListToShowStr,
ListsToShowStr, IndexedListToShowStr, IndexedListsToShowStr, StringsToShowStr,
StringsListToShowStr, IndexedStringsToStr, IndexedStringsToShowStr,
IndexedStringsListToStr, VariantsToShowStr, VariantsListToShowStr,
IndexedVariantsToShowStr, IndexedVariantsListToShowStr, CompareStrings,
PCharArrayToStrings, VarRecsToVariants); список поименованных указателей, строк,
вариантов, строк с параметрами, список поименованных массивов указателей, строк,
вариантов, поименованных, кэшированных, кэшированных с множественным доступом
объектов (модуль GDifUtil.pas классы TPointerParams, TStringParams,
TVariantParams, TParamValues, TPointerArrays, TStringArrays, TVariantArrays,
TNamedObjLis, TCachedObjects, TSharedObjects);
- множество функций работы с файлами без SysUtils: извлечение пути, имени,
расширения, диска, изменение расширения, каталог Windows, системный, временный,
поиск доступного на запись каталога при ограниченных правах, начиная просмотр с
временного, дата модификации, создания файла, размер, корректная проверка
существования файла, каталога, короткое имя файла о длинному и наоборот,
удаление файла, в том числе доступного только для чтения, буквы всех дисков,
несъемных дисков, доступ к файлу с проверкой задаваемых разрешений, генерация
имени временного файла, безопасное удаление файла, чтение и запись фрагмента
файла, класс информации о прогрессе операции, извлечение имен программ из
командной строки, работа с файловой переменной, сохраняющей информацию об
открытии файла (модуль GGlbUtil.pas функции ExtractFilePathStd,
ExtractFileNameStd, ExtractFileExtStd, ExtractFileDriveStd, ChangeFileExtStd,
GetWinDir, GetSysDir, GetTmpDir, GetWritableTmpDir, FileAgeStd, FileAgeCreate,
SizeOfFile, FileExistsStd, DirectoryExistsStd, ShortToLongPathStd,
LongToShortPathStd, DeleteFileStd, GetDisks, GetHardDisks, SafeAccessFile,
GetTempFileName, CleanDeleteFile, FileBlockToStr, StrToFileBlock; модуль
GDifUtil.pas класс TProgressProcessing, CmdLinePrograms, FIInit, FICreate,
FICreateTemp, FIOpen, FIOpenNew, FISize, FIClose, FIDelete).
II. Специальные функции (окна, база, интернет, COM, интерпретация скриптов,
процессы, сжатие, привязка к компьютеру, графика).
1. Диалоги. Диалоги без
VCL, SysUtils и ресурсов; добавление иконки в системную область
панели задач; получение списка окон верхнего уровня или иерархии с дочерними
окнами; скроллирование в конец и поиск в TRichEdit в VCL, быстрое получение и
обновление списка TListView и иерархии TTreeView из списка и иерархии в памяти:
- диалоги без VCL, SysUtils - функции ввода строки, пароля, логина и пароля,
просмотра и редактирование текста с выбором кодировки, ввода имени файла или
выбора каталога, ввода случайной последовательности (модуль GGlbUtil.pas функции InputDlg,
PasswordDlg, LogonDlg, ViewDlg, MemoDlg, FileListDlg,
BrowseDirectoryStd, FileDlg, FileInputDlg, RandInputDlg), функции взывают
дочерние объекты от единого абстрактного объекта, упрощающего разработку новых
модальных диалогов, TCustomClassForm (модуль GGlbUtil.pas);
- добавление иконки в системную область панели задач, создание окна, служебного
окна, уничтожение без SysUtils, список окон задачи, список окон верхнего уровня,
иерархия дочерних окон для окна, поиск окна по подстрокам класса и текста,
получение класса, текста окна (модуль GGlbUtil.pas функции TaskBarIcon,
AllocateWnd, AllocateToolWnd, DeallocateWnd, TaskWindows, TopWindows,
ChildWindowsHierarchy, WndFind, GetWndClass, GetWndText);
- скроллирование в конец и поиск в TRichEdit в VCL, быстрое получение и
обновление списка TListView и иерархии TTreeView из списка и иерархии в памяти,
масштабирование всех форм по указанным максимальным размерам, форма для диалога
с поддержкой минимизации приложения (включая остальные формы) при ее минимизации
(модуль GVCLUtil.pas функции RichEditScrollDown, RichEditFind, RetrieveListItems,
UpdateListItems, UpdateListView, RetrieveTreeNodes, UpdateTreeNodes,
AppScaleForms, класс TFormMin).
2. Базы данных. Работа с базами данных через ADO без VCL, загрузка выборки таблиц в
индексируемую таблицу вариантов в памяти и обновление выборки таблицы в базе по
таблице; получение версии ADO; чтение структуры базы:
- класс-обертка для работы с базами данных через ADO без VCL TADODatabaseAccess,
есть методы OpenReadRecordset и OpenWriteRecordset для работы с Recordset, метод
ExecSQL для выполнения SQL-запроса, а также метод ExecSQLs для выполнения набора
SQL-запросов, разделенных 'GO' или ';', можно задать максимально допустимый
размер BLOB-полей в свойстве MaxBLOBSize, автоподтверждение транзакций в
свойстве IsAutoCommit, кодирование SQL-запроса в SQLEncoding (например, для
поддержки Oracle с кодировкой ISO Cyrillic), класс позволяет загружать выборку
таблиц для указанного запроса в индексируемую таблицу вариантов в памяти с
помощью метода ReadTable, далее после после изменений, добавлений и удалений в
таблице в памяти ее можно сохранить в базу методом WriteTable, то есть
синхронизировать содержимое выборки таблицы базы с таблицей памяти, при этом
производится сравнение записей по индексу с выполнением необходимых вставок,
удалений и обновлений записей в базе (обеспечивается корректная работа с
BLOB-полями, например, для MS-SQL, Sybase, Oracle, Interbase) - для этих целей
более удобен отдельный объект TTableAccess, в котором для свойства с таблицей
вариантов TableData в конструкторе нужно определить индексируемые колонки через
IndexedColCount и IndexedCols, далее загрузка осуществляется методом Load,
сохранение методом Save или добавление только новых записей методом Append,
доступ к загруженным полям через свойство Items, свойство ExportStr позволяет
экспортировать таблицу в строку или импортировать из строки, а не базы
(упомянутые классы определены в модуле GDifUtil.pas);
- преобразование значения для вставки в SQL путем удвоения внутренних кавычек и
обратная операция, преобразование даты в универсальный формат для вставки в SQL,
т.е., например, '2002-01-31' или '2002-01-31 11:28:59', объединение фрагментов
условия SQL-запроса, проверка, что строка содержит только допустимые в данном
запросе слова при получении запроса из внешнего источника, построение условия
запроса по параметрам и типам сравнений, простейший парсер колонок и имени
таблицы SQL-запроса, получение версии COM-объекта, например версии ADO при
задании имени класса 'ADODB.Connection', копирование большой таблицы по
кусочкам, удаление старых записей из большой таблицы по кусочкам (модуль
GGlbUtil.pas функции SQLStr, FromSQLStr, SQLDate, SQLConcatWhere, SQLCheck; модуль
GDifUtil.pas функции BuildWhere, ParseSQL, COMVer, TableCopy,
TableDelete);
- чтение через ADO имен таблиц, их колонок, типов и размеров колонок,
индексов, типов индексов колонок индексов (модуль GDifUtil.pas класс TADODatabaseAccess,
свойства Tables, Columns, ColumnTypes, ColumnSizes, Indexes, IndexTypes, IndexesColumns).
3. Интернет. Работа с сокетами для сервера и клиента без VCL и SysUtils, работа с HTTP,
проверка подключения и подключение к интернету, выход из Offline-режима браузера,
получение собственных IP-адресов, разбор HTTP-ссылки; обертки ASP- и
HTML-объектов, общий метод чтения из ASP параметров сертификата CryptoAPI/Крипто-Про
и Сигнал-КОМ Inter-PRO Client; отсылка почты:
- простой класс TSocketAPI работы с сокетами без VCL и SysUtils, есть метод для
запуска сервера Listen и его закрытия Close, отключения сокета SocketDisconnect,
посылки данных сокету SocketSend, серверные события OnServerSocketXXXX, свойства
запуска сокета клиента Active при заданном хосте Host или адресе
Address, порте
Port или имени сервиса Service, Send для посылки данных и
Receive для приема,
клиентские события OnClientSocketXXXX, метод SocketAPI.LocalIP позволяет
получить все собственные IP-адреса (класс описан в модуле GGlbUtil.pas);
разделение строки с хостом и возможным портом через двоеточие на составляющие,
разделение ссылки сервис://[логин[:пароль]@]сервер[:порт][/страница][?параметры]
на составляющие (модуль GGlbUtil.pas, функции SplitHostPort, SplitLink);
- класс поддержки WinInet позволяет выполнить посылку HTTP- или HTTPS-запроса и
получить ответ, также получить состояние подключения к интернету, попытаться
подключиться, выйти из Offline-режима браузера (модуль GDifUtil.pas, методы WinInetAPI.Post,
WinInetAPI.InternetGetConnectedState,
WinInetAPI.InternetAttemptConnect, WinInetAPI.InternetGoOnline); простая функция
для отсылки почты (модуль GVCLUtil.pas функция SendMail);
- обертки TASPAccess и THTMLAccess для доступа к ASP и HTML с общим предком,
свойство Items возвращает параметр страницы ASP (поддерживаются параметры любой
длины) или поле формы (по умолчанию - первой найденной) в браузере, метод Alert
производит запись на страницу или вывод диалога в браузере, для работы с ASP
задаются свойства ApplicationObject, ObjectContextObject, RequestObject,
ResponseObject, ServerObject, SessionObject, для работы с HTML задается свойство
WindowObject или DocumentObject, можно задать явно форму FormObject (классы
описаны в GDifUtil.pas); унаследованные от класса функций TVarFunctions базовые
классы TWebPage и TSrvWebPage поддержки веб-страницы из HTML и ASP, например,
для экспорта функций из ActiveX-компонента, свойства Vars и PageVars задает
глобальные и переменные страницы, для ASP метод CertificateField возвращает
поле сертификата, поддерживает информацию о сертификате, возвращаемую CryptoAPI/Крипто-Про
и Сигнал-КОМ Inter-PRO Client (классы определены в модуле GDifUtil.pas).
4. Скрипты. Поддержка интерпретатора скриптов JScript, VBScript; поддержка интерфейса
IDispatch; внутренний парсер функции строки обращения к COM-объекту с
параметрами; получение GUID:
- TActiveScriptAccess - класс поддержки интерфейса IActiveScript
устанавливаемого с браузером интерпретатора JScript, VBScript (напрямую, без
использования ScriptControl), свойство ScriptLang задает язык, метод
ParseScriptText задает текст скрипта, далее через свойство ScriptDispatch можно
вызывать функции скрипта, списки функций и переменных возвращаются в свойствах
ScriptFuncNames и ScriptVarNames, метод Clone возвращает копию объекта с
загруженным скриптом, например, для работы с ней из другого потока, метод
AddNamedItem позволяет сделать доступным в скрипте указанный COM-интерфейс; сами
COM-интерфейсы внешними с функциями, импортируемыми в скрипт, удобно делать на
основе TDispatchObject (без создания и регистрации ocx), где GetInterface
возвращает реализуемый им интерфейс IDispatch, и чтобы добавить в IDispatch
функции, нужно создать потомка от TDispatchObject с динамическими методами
(в
формате сообщений Delphi) и зарегистрировать их в конструкторе вызовом метода
RegisterMethod (упомянутые классы и методы определены в модуле GDifUtil.pas); в
описанный метод-сообщение объекта TDispatchObject передается структура TMessage, приводимая к типу
TInvokeInfo (описан в модуле GGlbUtil.pas) с параметрами
вызванной функции IDispatch и полем для результата, для чтения и записи
параметров и результата имеются функции VPrmDef, VPrm, VSet, VRes (описаны в
модуле GGlbUtil.pas);
- инициализация OLE с автоматической деинициализацией при выгрузке приложение,
динамический вызов метода IDispatch, в том числе парсер строки функции обращения
к COM-объекту с параметрами, версия COM-объекта, получение GUID, в том числе в
виде строки, HEX, бинарном виде, также генерация более короткого идентификатора
с достаточной степенью уникальности, класс безопасного автоматного интерфейса
для загружаемых в браузер ocx (модуль GGlbUtil.pas функция OleInit, модуль
GDifUtil.pas функции DispatchInvoke, DispatchCall, COMVer, GenerateGuid,
GenerateGuidStr, GenerateGuidHex, GenerateGuidBin, GenIdMode, TSafetyAutoObject).
5. Процессы. Список имен и идентификаторов процессов; запуск задачи с ожиданием ее
завершения или ожиданием создания ею первого окна, открытие документа; ожидание
создания файла, ожидание указанного промежутка времени без загрузки процессора;
объекты межзадачного обмена; запуск приложения от имени пользователя; запуск и
остановка сервиса с таймаутом; запуск и остановка приложений COM+ в Component
Services:
- получение списка имен и идентификаторов процессов, реализация с поддержкой Windows 95/NT+,
для удобства список кэшируется, кэш можно очистить, чтобы список
перечитался при следующем запросе, идентификатор процесса по имени и наоборот,
принудительное завершение процесса по имени (модуль GDifUtil.pas свойства WindowsAPI.ProcessNames,
WindowsAPI.ProcessIds, методы
WindowsAPI.ClearProcessList, WindowsAPI.ProcessNameToId,
WindowsAPI.ProcessIdToName, WindowsAPI.TerminateProcessByName);
- проверка существования, статуса, запуск и остановка сервиса с ожиданием
указанного таймаута для каждого из зависимых сервисов (модуль GDifUtil.pas
методы WindowsAPI.ServicesSupported, WindowsAPI.ServiceExists,
WindowsAPI.ServiceRunning, WindowsAPI.ServiceStopped, WindowsAPI.RunService,
WindowsAPI.StopService); установка и удаление, запуск и остановка приложения
COM+ в Component Services на указанной машине, по умолчанию на текущей,
регистрация и разрегистрация OCX (модуль GDifUtil.pas свойство ComponentServices.MachineName
методы ComponentServices.InstallApplication,
ComponentServices.UninstallApplication, ComponentServices.RunApplication,
ComponentServices.StopApplication, функции RegisterOCX, UnregisterOCX);
- запуск процесса и возможность ожидания его завершения, открытие документа,
HTTP-ссылки или e-mail, получение имени процедуры в DLL с загрузкой последней
при необходимости, запуск процесса под указанным пользователем (модуль
GDifUtil.pas функции RunProcess, OpenDocumentPrm, LoadDLLProcSafe, метод
WindowsAPI.RunProcessAsUser); запуск процесса с ожиданием создания им первого
окна или отдельно ожидание отображения окна, ожидание появления файла,
записываемого файла, корректное ожидание указанное количество миллисекунд,
реализованное через комбинацию использования таймера и Sleep и не загружающее
процессор, VCL не требуется (модуль GDifUtil.pas методы TWaitWnd.WaitRunProcessWindow,
TWaitWnd.WaitWindowVisible, TWaitWnd.WaitFile,
TWaitWnd.WaitWritableFile, TWaitWnd.WaitTime);
- межзадачный обмен с помощью сообщений Windows и прямой записи и чтения памяти
памяти другого процесса: вызов функции другого процесса и запуск обработчика
данных вызовов, которому передается класс с зарегистрированными функциями,
наследуемый от базового (модуль GDifUtil.pas функции ProcessFuncCall, FuncCall,
ProcCall, RunFuncCallHandler, класс TFuncCallHandler).
6. Сжатие. Сжате и распаковка с использованием Delphi ZLib (без внешних dll);
распаковка CAB-файла:
- сжате и распаковка строки путем использования библиотеки Delphi ZLib без
внешних dll, степень сжатия выше ZIP (модуль GDifUtil.pas функции ZLibCompress,
ZLibDecompress);
- распаковка CAB-файла (модуль GGlbUtl.pas функция CABExtract); простейшая
упаковка строки заменой повторов и распаковка (модуль GGlbUtil.pas функции PackStr,
UnpackStr).
7. Привязка к компьютеру. Привязка приложения к компьютеру путем
чтения из оборудования информации о
BIOS, CPU, HDD; также чтение системной информации тактовой частоте процессора,
PCI-драйверах, версии Windows и Internet Explorer, доступных шрифтах:
- чтение идентификатора и серийного номера CPU из оборудования, корректное
определение тактовой частота процессора (модуль GGlbUtil.pas функции CPUInfo,
GetCPUSpeed, CPUSpeed); чтение версии, даты, производителя и серийного номера
BIOS из оборудования, пробуются один или несколько из 6 альтернативных способов
в зависимости от операционной системы и прав пользователя, поддерживаются
Windows 95/NT+, включая специальное сканирование памяти BIOS для определения
параметров неизвестных моделей BIOS (модуль GDifUtil.pas функция BIOSInfo);
чтение модели, версии и серийного номера для четырех первых контроллеров HDD,
используется один или несколько из 7 альтернативных способов в зависимости от
операционной системы и прав пользователя, поддерживаются Windows 95/98/ME/NT/2000/XP/2003
(модуль GDifUtil.pas функция HDDInfo); получение сводного идентификатора системы
для привязки к компьютеру (модуль GDifUtil.pas функция SystemInfoStr),
обеспечивается одинаковый результат в случае установки на машину разных версий
Windows, при разных правах пользователя, пример возвращаемого идентификатора
системы:
'CPU:GenuineIntel-0000068A-0387F9FF-0000C30C-9C8895C0|BIOS:02/16/96-Award
Modular BIOS v4.50PG-02/17/96-i430FX-2A59CT4AC-00|HDD:FUJITSU
MPA3043ATU-9517-01126571';
- версия и тип Windows, версия и тип Internet Explorer, SID текущего
пользователя, завершение работы текущего или указанного компьютера, открытие и
закрытие CD, чтение информации о драйверах PCI, установленные в системе шрифты,
чтение и задание настроек печати Internet Explorer (модуль GGlbUtil.pas функции GetWinVer,
GetWinType, IEVer, IEFriendlyVer, ObtainCurrentSid, ShutdownComputer,
OpenCD CloseCD, модуль GDifUtil.pas функции PCIDrivers, GetFontList, IEPageSetup).
8. Графика. Поддержка загрузки GIF, PCX - позаимствованы с torry.ru; поддержка
загрузки других форматов графики, в том числе TIF, PNG с помощью GDI+ (сделана
динамически, т.к. библиотека может отсутствовать в старых Windows); функция
изменения яркости картинки:
- классы для загрузки GIF и PCX в битмэп TGIFBitmap и TPCXBitmap -
позаимствованы с torry.ru, сделана динамическая инициализация, поэтому для
включения поддержки форматов перед попыткой их загрузки в TPicture нужно вызвать
функцию ImagesSupportInit или отдельные функции GIFSupportInit, PCXSupportInit,
разрегистрация при выходе из приложения при этом произойдет автоматически
(упомянутые классы и функции определены в модуле GVCLUtil.pas); изменение
яркости картинки (модуль GVCLUtil.pas функция PictureBrightness);
- загрузка рисунка из файла или интерфейса потока в битмэп с помощью кодеков
GDI+ (библиотека подгружается динамически), поддерживающих форматы TIF, PNG и
большинство других графических форматов (модуль GDifUtil.pas методы GDIPlusAPI.FileToBitmap,
GDIPlusAPI.StreamToBitmap), возвращаемый дескриптор
битмэпа можно потом присвоить в TBitmap.Handle, библиотека GDI+ предустановлена
в новых операционных системах, может быть установлена в Windows 98.
9. Финансовые и др. Прочие специализированные функции и классы конвертации,
в том числе в и из формата 1С, поддержки HTTP-транспорта, получения информации об автозагружаемых
процессах Windows:
- классы экспорта и импорта формата из значений разных типов или параметров со
значениями с поддержкой секций (модуль GDifUtil.pas классы TExportWriter,
TExportReader, TDocExportWriter, TDocExportReader); экспорт и импорт набора
полей в текстовый формат, конвертация в и из формата 1С, формата с
разделителями, таблицы базы данных, MT940/MT103 с настройкой соответствия полей
(модуль GDifUtil.pas функция ConvertRun классы TTDEDIFReader, TTDEDIFWriter,
TINOTEC, TCommaSeparated, TTableFormat, TMT940);
- HTTP-транспорт, функционал серверной и клиентской частей, авторизация (модуль
GDifUtil.pas классы TTransportDBStorage, TTransportServer, TTransportWebClient;
модуль GExtUtil.pas класс TBaseTransportWebPage); класс общего доступа к
функциями криптографии CryptoAPI/Крипто-Про и Сигнал-КОМ Message-PRO, включая
диалоги подписи и проверки со списком полей без использования VCL (модуль GExtUtil.pas
класс TBaseCryptoService); базовый класс поддержки лицензии без
криптографии (модуль GExtUtil.pas класс TCustomLicence);
- управление обновлением с перезапуском сервисов, приложений COM+ в Component
Services, обновлением базы и файлов настроек (модуль GExtUtil.pas класс
TUpdateManager); группы, элементы и извлечение имен процессов и библиотек,
автозагружаемых при запуске Windows (модуль GDifUtil.pas функции StartupGroups,
StartupEntries, StartupFiles).
III. Криптография (поддержка библиотек асимметричной шифрации и ЭЦП,
симметричная шифрация и CRC).
1. CryptoAPI/Крипто-Про. Криптография
CryptoAPI RSA, RSA-128 и Крипто-Про ГОСТ 28147-89, ГОСТ Р 34.11/34.10-94/2001
с кэшированием:
- подпись и проверка подписи, шифрация и дешифрация на секретном и открытом
ключе, секретном ключе и сертификате, отдельно шифрование на симметричном ключе, хэширование,
генерация ключей при прямой работе с функциями CryptoAPI,
возможность хранения ключей Крипто-Про в файлах с временным импортом в реестр на
период криптооперации и экспортом после нее, SID пользователя для Крипто-Про
(модуль GCryAPI.pas методы CryptoAPI.SysSign, CryptoAPI.SysVerify,
CryptoAPI.SysVerifyMulti, CryptoAPI.SysProtect, CryptoAPI.SysUnprotect,
CryptoAPI.CertSign, CryptoAPI.CertSignMulti, CryptoAPI.CertVerify,
CryptoAPI.CertVerifyMulti, CryptoAPI.CertProtect, CryptoAPI.CertUnprotect,
CryptoAPI.HashData, CryptoAPI.SysGen, CryptoAPI.SysGenSymmetric,
CryptoAPI.SysProtectSymmetric, свойство CryptoAPI.CProSID);
- поддержка кэширования дескрипторов ключей при всех операциях (параметр
IsCaching = True), очистка кэша (модуль GCryAPI.pas процедура CryptoAPIReset);
поддержка запросов и сертификатов Base64 (двоичный, Base64 или PEM-форматы
распознаются автоматически); шифрование секретного ключа на пароле без
использования стандартного диалога для RSA; помимо шифрования и подписи файлов и
блоков памяти (регулируется параметром IsFile) возможность подписи и проверки,
шифрации и дешифрации потока (модуль GCryAPI.pas методы CryptoAPI.SignData,
CryptoAPI.VerifyData, CryptoAPI.ProtectData, CryptoAPI.UnprotectData);
- создание запросов на сертификат и установка сертификата без и с использованием
xenroll.dll (модуль GCryAPI.pas методы CryptoAPI.CertRequest,
CryptoAPI.CertRequestXEnroll, CryptoAPI.CertRequestByKey, CryptoAPI.CertAccept,
CryptoAPI.CertAcceptXEnroll, CryptoAPI.SysCertRequest, CryptoAPI.CertGenReqSrv,
CryptoAPI.CertGenReq);
- выпуск сертификата по запросу с помощью Microsoft Certification Authority или
его отзыв, получение сертификата Центра сертификатов и списка отозванных
сертификатов, проверка действительности сертификата прямым обращением к Центру
сертификации или с помощью сертификата ЦС и его списка отозванных сертификатов
(модуль GCryAPI.pas методы CryptoAPI.CACertificate, CryptoAPI.CACRL,
CryptoAPI.CAAcceptRequest, CryptoAPI.CARetrieveCertificate,
CryptoAPI.CAIssueCertificate, CryptoAPI.CARevokeCertificate,
CryptoAPI.CACryptVerifyCert, CryptoAPI.CryptVerifyCert, CryptoAPI.CAVerifyCert);
- поиск сертификата в хранилище по набору параметров, чтение его полей,
добавление сертификата в хранилище, диалоги просмотра и выбора сертификатов
(модуль GCryAPI.pas методы CryptoAPI.FindCertInStore, CryptoAPI.CertFind,
CryptoAPI.CertField, CryptoAPI.AddCertToStore, CryptoAPI.SelectCertificate,
CryptoAPI.ViewCertificate, CryptoAPI.CertificateManager, CryptoAPI.CertView);
- список установленных в системе типов криптопровайдеров, их имен и параметров,
поддерживаемых алгоритмов и алгоритмов по умолчанию (модуль GCryAPI.pas свойства
CryptoAPI.ProviderTypes, CryptoAPI.ProviderTypesInfo, CryptoAPI.ProviderNames,
CryptoAPI.ProviderNameTypes, CryptoAPI.ProviderNamesInfo, CryptoAPI.ProviderAlgs,
CryptoAPI.ProviderAlgsInfos, CryptoAPI.ProviderDefAlgsInfo, CryptoAPI.OIDs,
CryptoAPI.OIDNames).
2. Сигнал-КОМ Message-PRO. Криптография trial-версии Сигнал-КОМ Message-PRO RSA и
СКЗИ ГОСТ 28147-89, ГОСТ Р 34.11/34.10-94/2001 с кэшированием:
- подпись и проверка, шифрация и дешифрация (модуль GMProAPI.pas методы
MessagePro.Sign, MessagePro.Verify, MessagePro.Protect, MessagePro.Unprotect)
файла или блока памяти (регулируется параметром IsDataInFile) с возможностью
кэширования ключей (при задании параметра IsCaching = True), очистка кэша
(MessagePro.ClearCache);
- значения полей сертификата и просмотр содержимого сертификата аналогично
диалогу в Сигнал-КОМ Inter-PRO (модуль GCryAPI.pas методы MessagePro.CertField,
MessagePro.CertView), при использовании ранних версий mespro.dll возможность
показа диалога генерации случайной последовательности при ее отсутствии
аналогично диалогу, отображаемому поздними версиями mespro.dll.
3. Симметричное шифрование и CRC, хэширование. Шифрование по алгоритмам
Blowfish, RC6, GOST с кэшированием и CRC32, хэширование MD5, SHA1, SHA256, разбор X500:
- симметричная шифрация и дешифрация по алгоритмам Blowfish, RC6, GOST,
контрольная сумма CRC32, хэширование MD5, SHA1, SHA256 - позаимствованы с torry.ru,
добавлена возможность кэширования ключей шифрования, чтобы не проводить повторную инициализацию,
занимающую некоторое время, добавлена возможность поточного шифрования и CRC
(модуль GGlbUtil.pas функции CalcCRC, FileCRC, CalcMD5, CalcSHA1, CalcSHA256, модуль GDifUtil.pas
функции ProtectStr, UnprotectStr, StreamCRC, класс TStreamProtect);
- фомирование и однозначный разбор строки X500 с поддержкой имен параметров,
используемых в CryptoAPI и Message-PRO (модуль GDifUtil.pas функции StrToX500,
X500ToStr).
Utils. Обзор функционала.
1. Просмотр и проигрывание файлов, блокнот:
- внутренняя поддержка просмотра графических форматов bmp, dib, ico, wmf,
emf, jpg, gif, pcx; просмотр tif, png, pcd, tga и других форматов с помощью GDI+;
возможность увеличения и уменьшения, изменения яркости, полноэкранного просмотра
изображения, поворота, очистки от ряби, печати, печати на весь лист, копирование
и вставка, сохранение в виде bmp или jpg с указанием степени сжатия;
- проигрывание музыкальных и видео-файлов wav, mid, mp3, avi, mpg; возможность
паузы и продолжения проигрывания;
- просмотр текстовых файлов и файлов формата rtf; возможность изменения
кодировки текстовых файлов на кодировки Windows, DOS, KOI, ISO, Unicode;
поддержка разных вариантов перевода строк; копирование и вставка из буфера
обмена с правильной конвертацией русских букв, поиск и замена, переход к
указанной строке, изменение регистра, вставка и удаление пробелов в начале строк,
удаление пробелов в конце строк, удаление повторных пробелов, выравнивание по
колонкам, меню, шифрация на пароле, печать;
- загрузка при запуске файла, указанного в командной строке или переход в
указанный каталог, имя каталога параметре в командной строки должно оканчиваться
на слэш, поддержка Drag & Drop.
2. Конвертация и двоичный редактор файлов:
- конвертация файла или содержимого буфера обмена двоичного формата в
шестнадцатеричный формат и обратно, в Base64 и регистронезависимый аналог и
обратно, в формат строк C++ без окаймляющих кавычек, в формат строк Pascal,
строк значений в HTML, JScript, URL, SQL и обратно, в формат ZLib, ZLib в Base64
и обратно, в DOS, KOI, ISO, Unicode формат и обратно, в формат Paradox и обратно,
в формат с XOR и обратно, в формат с упаковкой повторяющихся символов и обратно;
- конвертация файла или содержимого буфера обмена с заменой каждой цепочки
повторяющихся пробелов длиной больше указанного числа на Tab; представление
данных файла или содержимого буфера обмена в виде модуля Pascal с определением
массива с этими данными; простое копирование без конвертации;
- разделение файла на фрагменты указанной длины с расширениями 001, 002 и т.д.;
- двоичные просмотр и редактирование файла, переход на указанный адрес, двоичный
или текстовый поиск в просматриваемом файле.
3. Просмотр, правка и экспорт в SQL-запросы значений полей базы данных, включая
BLOB-поля:
- просмотр и правка полей базы данных через ADO с настройкой таймаутов
подключения и выполнения операции, формирование строки соединения ADO с
возможностью загрузки или сохранения строки соединения в файл формата udl, выбор
кодировки SQL-запроса, включая DOS, KOI, ISO;
- чтение и изменение поля, включая BLOB-поля, в исходном двоичном формате, в
шестнадцатеричном формате, в формате строк C++ без окаймляющих кавычек, в
формате двоичного ini-файла, просмотр длины поля в байтах; возможность
сохранения значения поля, включая BLOB-поля, в файл или загрузки из файла;
запись в поле текущей даты, уникального 40-байтного идентификатора на основе
GUID и системных тиков; история команд;
- выполнение одной или нескольких SQL-команд, разделяемых "GO" или ";", с
поддержкой задания начал транзакций "BEGIN TRANSACTION" и окончаний транзакций "COMMIT
TRANSACTION";
- выделение части или всех записей таблицы; копирование выделенных записей
таблицы в буфер обмена в формат с разделением значений полей табуляциями, с
представлением значений NULL в виде пустых строк или строк "(null)", заголовок
скопированных данных состоит из строки с именем таблицы, строки типов и строки
названий колонок, количество первых колонок, принадлежащих главному ключу,
задается, по умолчанию - одна; копирование выделенных записей таблицы с
преобразованием в SQL-команды вставки, обновления или удаления записей;
преобразование буфера обмена с таблицей в формат с разделением значений полей
табуляциями в SQL-команды вставки, обновления или удаления записей, заголовок
данных буфера обмена должен состоять из строки с именем таблицы, строки типов и
строки названий колонок, звездочка в префиксе типа колонки указывает на
принадлежность колонки к главному ключу.
- просмотр списка таблиц, структуры базы данных и экспорт структуры базы
в SQL-команды создания таблиц (различные типы полей приводятся к типам int, float,
datetime, char, varchar, text или image), главных ключей, уникальных ключей и индексов
(проверен для MS-SQL, Sybase, Oracle, Interbase, Access, dBase; синтаксис формируемых
SQL-запросов совместим с MS-SQL, Sybase, для остальных видов баз может потребоваться
поправить имена типов); бэкап структуры и данных всех или выбранных таблиц базы
в SQL-команды с возможностью упаковки в формат ZLib (включая экспорт BLOB-полей
в шестнадцатеричном формате, принятом для BLOB в синтаксисе SQL-запросов MS-SQL,
Sybase), восстановление базы из бэкапа (то есть возможность распаковки формата
ZLib и далее последовательное выполнение SQL-запросов).
4. Список запущенных процессов:
- просмотр списка имен и идентификаторов запущенных процессов с возможностью
просмотра полного пути до процесса, отображение количества запущенных процессов;
- корректно работающее завершение выбранного процесса;
- копирование списка процессов в буфер обмена, сортировка по имени процесса или
по порядку запуска.
5. Список активных окон:
- просмотр иерархии родительских и дочерних окон с возможностью группировки по
процессам, отображение количества всех оконных элементов и окон верхнего уровня;
- посылка окну любого сообщения с параметрами с ожиданием получения или без
ожидания, возможность отложенной на три секунды отсылки;
- копирование иерархии окон в буфер обмена, возможность сортировки, поиска по
заголовку, классу, дескриптору окна, идентификатору процесса.
6. Системная информация:
- считываемая напрямую из оборудования информация: производитель, идентификатор,
серийный номер, тактовая частота процессора; версия, производитель, дата,
серийный номер BIOS; модели, версии, серийные номера первых четырех жестких
дисков;
- объем физической и используемой памяти; типы логических дисков, объем и
количество занятого места на несъемных носителях; размер экрана и доступные
видеорежимы с возможностью переключения на выбранный; PCI-драйвера;
- версия Windows, версия Internet Explorer, версия ADO, версия Script Control;
- статус подключения к Internet, локальные IP-адреса машины;
- имя компьютера, логин, SID пользователя, язык, системный каталог Windows,
временный каталог, параметры запуска, значения переменных окружения, время, GUID,
установленные в системе шрифты, метрики;
- копирование системной информации в буфер обмена, открытие и закрытие CD,
завершение Windows в выбранном режиме для заданного компьютера.
7. Запускаемые при старте Windows процессы:
- сводный список запускаемых при старте Windows процессов, сервисов, драйверов с
датой модификации и именем производителя и возможность просмотра ключей
автозапуска реестра, папок меню автозагрузки, файлов config.*, autoexec.*,
system.ini, win.ini, dosstart.bat, сервисов, виртуальных драйверов устройств,
отображение количества элементов автозапуска;
- просмотр статуса выполнения, информации о версии и производителе,
редактирование и удаление элементов автозапуска; запуск и завершение программ из
списков автозапуска;
- копирование списков в буфер обмена, возможность сортировки, включения показа
сервисов и системных библиотек.
8. Отправка и прием данных через серверный или клиентский сокет, включая
двоичные данные, WhoIs, отправка почты:
- слушание порта или соединение с указанным хостом по указанному порту, отправка
и прием данных через установленные соединения с возможностью посылки и приема
двоичных данных в формате строк C++ без окаймляющих кавычек;
- WhoIs-запрос информации о хосте или IP-адресе с выделением информации о
почтовом адресе; поиск подстроки в принятых и отправленных данных; отправка
SMTP-почты с заданием необходимых адреса отправителя и адреса получателя.
9. Генерация ключей, запрос, издание и установка сертификатов, в том числе для сервера,
для алгоритмов CryptoAPI RSA и Крипто-Про ГОСТ:
- генерация секретного ключа (с шифрованием его на пароле или без) и запроса, в том числе
для сервера (в хранилище локальной машины), по имени, должности, подразделению, организации, городу,
региону, стране, e-mail, прочим параметрам X500 с возможностью сохранения данных
публичного ключа в отдельный файл для алгоритмов криптопровайдеров CryptoAPI
Microsoft RSA (RSA40, RSA128) и Крипто-Про ГОСТ (GOST94, GOST2001);
- издание сертификата по запросу с помощью указанного центра сертификации Microsoft,
установка сертификата на компьютере, на котором был сгенерирован
запрос, в том числе для сервера (в хранилище локальной машины);
- генерация секретного и публичного ключа для алгоритмов криптопровайдеров
CryptoAPI Microsoft RSA (RSA40, RSA128) и Крипто-Про ГОСТ (GOST94, GOST2001),
сохранение секретного ключа Крипто-Про из реестра в файл; формирование запроса
для указанного секретного ключа; генерация симметричного (сессионного) ключа,
зашифрованного на секретном и публичном; перешифрация симметричного ключа на
публичном ключе клиента;
- информация об установленных криптопровайдерах CryptoAPI, идентификатор
пользователя SID для Крипто-Про; список алгоритмов по криптопровайдерам с
указанием размеров ключей; установленные в системе OID алгоритмов и их строковые
описания.
10. Шифрация и дешифрация, подпись и проверка ЭЦП для алгоритмов CryptoAPI RSA и
Крипто-Про ГОСТ, а также Сигнал-КОМ Message-PRO, перепривязка секретного ключа
от одного сертификата CryptoAPI к другому:
- шифрация и дешифрация файла с помощью ключей с использованием криптопровайдеров
CrptoAPI Microsoft RSA (RSA40, RSA128) и Крипто-Про ГОСТ (GOST94, GOST2001),
а также с помощью ключей и сертификатов с использованием
алгоритмов библиотеки Сигнал-КОМ Message-PRO (mespro.dll): RSA, ГОСТ, ГОСТ PSE;
шифрация и дешифрация с помощью сертификатов в хранилищах CryptoAPI с указанными
серийными номерами; возможность шифрации на симметричном ключе CryptoAPI,
зашифрованном на собственных секретном и публичном ключах или на собственном и
клиентском сертификате в хранилищах;
- подпись и проверка ЭЦП файла с помощью ключей с использованием
криптопровайдеров CrptoAPI Microsoft RSA (RSA40, RSA128) и Крипто-Про ГОСТ
(GOST94, GOST2001), а также с помощью ключей и сертификатов с использованием
алгоритмов библиотеки Сигнал-КОМ Message-PRO (mespro.dll): RSA, ГОСТ, ГОСТ PSE;
подпись и проверка подписи с помощью сертификатов в указанных хранилищах
CryptoAPI с указанными серийными номерами, в том числе для серверных (в
хранилище локальной машины); возможность включения сертификата CryptoAPI или
Message-PRO в подпись и проверка подписи с помощью сертификата в подписи, сам
сертификат проверяется с помощью указанного сертификата центра сертификации;
- перепривязка секретного ключа от одного сертификата CryptoAPI к другому для
указанных хранилищ и серийных номеров сертификатов, в том числе для серверных (в
хранилище локальной машины).
Поддерживаемые параметры командной строки:
- просмотр файла рисунка, проигрывание музыкального или видеофайла, просмотр
текстового файла:
Utils.exe <имя_файла>
- просмотр файлов в указанном каталоге:
Utils.exe <имя_каталога>\
- двоичный просмотр файла:
Utils.exe BINVIEW <имя_файла>
- конвертация файла
Utils.exe <тип_конвертации> <имя_файла>
[<имя_результирующего_файла>] [<константа_модуля>]
[<количество_пробелов>]
"clipboard:" в качестве имени файла означает
буфер обмена
возможные значения параметра <тип_конвертации>:
BINTOHEX - двоичный в шестнадцатеричный формат;
HEXTOBIN - шестнадцатеричный формат в двоичный;
BINTOB64 - двоичный в формат Base64;
B64TOBIN - формат Base64 в двоичный;
BINTOCI - двоичный в регистронезависимый текстовый формат;
CITOBIN - регистронезависимый текстовый формат в двоичный;
DOSTOWIN - кодировку OEM в ANSI;
WINTODOS - кодировку ANSI в OEM;
KOITOWIN - кодировку KOI в кодировку Windows;
WINTOKOI - кодировку Windows в кодировку KOI;
ISOTOWIN - кодировку ISO в кодировку Windows;
WINTOISO - кодировку Windows в кодировку ISO;
BINTOPDOX - двоичный в формат Paradox;
PDOXTOBIN - формат Paradox в двоичный;
BINTOXOR - двоичный в XOR кодирование;
XORTOBIN - XOR кодирование в двоичный;
ANSITOWIDE - ANSI в формат Unicode;
WIDETOANSI - формат Unicode в ANSI;
BINTOCPP - двоичный в формат строк C++;
CPPTOBIN - формат строк C++ в двоичный;
BINTOPAS - двоичный в формат строк Pascal;
PASTOBIN - формат строк Pascal в двоичный;
BINTOPACK - упаковка повторяющихся символов;
PACKTOBIN - распаковка повторяющихся символов;
BINTOHTML - двоичный в формат строк в HTML;
HTMLTOBIN - формат строк в HTML в двоичный;
BINTOJS - двоичный в формат строк в JScript;
JSTOBIN - формат строк в JScript в двоичный;
BINTOURL - двоичный в формат значений параметров в URL;
URLTOBIN - формат значений параметров в URL в двоичный;
BINTOSQL - двоичный в формат значений в SQL;
SQLTOBIN - формат значений SQL в двоичный;
BINTOZLIB - двоичные данные в сжатые ZLib;
ZLIBTOBIN - сжатые ZLib данные в двоичные;
BINTOZB64 - двоичные данные в сжатые ZLib в виде Base64;
ZB64TOBIN - сжатые ZLib в виде Base64 в двоичные данные;
ZLIBPACK - сжатие файла методом ZLib с четырехбайтным префиксом длины исходного файла
(предназначено для сжатия крупных файлов, не помещающихся в памяти);
ZLIBUNPACK - распаковка файлов, сжатых методом ZLib с четырехбайтным префиксом длины
исходного файла;
STORE - копирование без изменений;
BINTOUNIT - двоичные данные в модуль с массивом Pascal с именем
<константа_модуля>;
SPACESTOTAB - замена всех цепочек подряд идущих пробелов длиной от
<количество_пробелов> штук на Tab;
- разделение файла на фрагменты указанного максимального размера в байтах:
Utils.exe SPLIT <имя_файла> <имя_результирующего_файла>
[<размер_фрагмента>]
- экспорт структуры базы данных, содержимого таблиц в SQL-запросы:
Utils.exe TABLES
<строка_соединения_ADO> [/SQLDivider=GO] [/Tables=<файл_таблиц>] [/Selects=<файл_SQL_запросов>]
[/SQLs=<файл_SQL_команд>] [/Backup] [/Packed] [/TempFile=SQLS.TMP]
параметр "/SQLDivider" задает
разделитель SQL-команд, при отсутствии или пустом значении параметра используется разделитель ";";
параметр
"/Tables" задает файл для списка таблиц;
параметр "/Selects" задает файл для SQL-запросов вида
"SELECT * FROM <имя_таблицы>" для каждой таблицы;
параметр "/SQLs_file" задает файл для SQL-команд создания
таблиц, главных ключей, уникальных ключей и индексов;
параметр "/Backup" задает режим дополнения файла
<файл_SQL_команд> SQL-запросами данных таблиц;
параметр "/Packed" задает режим упаковки в формате
ZLib файла <файл_SQL_команд>;
параметр "/TempFile" - задает временный файл перед упаковкой с помощью
ZLib результата в <файл_SQL_команд>;
- выполнение одной или нескольких SQL-команд, разделяемых "GO" или ";", с
поддержкой задания начал транзакций "BEGIN TRANSACTION" и окончаний транзакций
"COMMIT TRANSACTION":
Utils.exe SQL <строка_соединения_ADO> <файл_SQL_команд>
[/ErrorsFile=<файл_ошибок>] [/ConnectionTimeout=<таймаут_соединения_в_секундах>]
[/CommandTimeout=<таймаут_операции_в_секундах>] [/Encoding=<кодировка>] [/Packed]
[/TempFile=SQLS.TMP]
<строка_соединения_ADO> может быть "FILE
NAME=<UDL_file_name>";
<кодировка> может быть "DOS", "KOI",
"ISO";
параметр "/Packed" указывает на то, что <файл_SQL_команд> упакован ZLib и требует
распаковки;
параметр "/TempFile" задает временный файл для результатов распаковки, по умолчанию SQLS.TMP;
- преобразование данных таблицы в SQL-команды:
Utils.exe SQL<тип_команды>
<файл_данных> <файл_SQL_команд> [/NullStr=(null)]
[/SQLDivider=GO]
<тип_команды> может быть "INSERT", "UPDATE"
или "DELETE",
<файл_данных> задает файл данных таблицы формата со значениями полей,
разделенных табуляциями, и заголовком:
<имя_таблицы>
<тип_поля_1><табуляция><тип_поля_2><табуляция><тип_поля_3>...
<имя_поля_1><табуляция><имя_поля_2><табуляция><имя_поля_3>...
<значение_1><табуляция><значение_2><табуляция><значение_3>...
<значение_1><табуляция><значение_2><табуляция><значение_3>...
...
где <тип_поля> может быть "BOOLEAN", "INTEGER", "FLOAT",
"CURRENCY", "DATETIME",
"STRING", "BINARY"; для колонок главного ключа в качестве префиксов в их типах
необходимо добавить символ "*";
параметр "/NullStr" задает строку, представляющую значение NULL;
параметр "/SQLDivider" задает разделитель SQL-команд, при отсутствии или пустом
значении параметра используется разделитель ";";
- завершение последнего процесса с указанным именем:
Utils.exe
TERMINATE <имя_программы>
- завершение всех процессов с указанным именем:
Utils.exe
TERMINATEALL <имя_программы>
- посылка сообщения окну с ожиданием получения:
Utils.exe
SENDMSG <подстрока_класса_окна>
<подстрока_заголовка_онка>
<код_сообщения> [<wparam>] [<lparam>]
параметр <код_сообщения> может задавать
целочисленный код сообщения, строковое
обозначение кода, например, "WM_CLOSE" или команду отображения, например,
SW_SHOW;
- посылка сообщения окну без ожидания получения:
Utils.exe POSTMSG <подстрока_класса_окна>
<подстрока_заголовка_онка>
<код_сообщения> [<wparam>] [<lparam>]
параметр <код_сообщения> может задавать
целочисленный код сообщения, строковое обозначение кода, например, "WM_CLOSE"
или команду отображения, например, SW_SHOW;
- открытие привода CD-ROM:
Utils.exe CD OPEN
- закрытие привода CD-ROM:
Utils.exe CD CLOSE
- изменение разрешения экрана
Utils.exe SCREEN <ширина> <высота>
[<бит_цвета_на_точку>] [<частота_в_MHz>]
- завершение компьютера
Utils.exe SHUTDOWN [FORCE]<режим>
[<имя_компьтера>]
возможные значения параметра <режим>:
LOGOFF -
завершение работы текущего пользователя;
REBOOT - перезагрузка;
SHUTDOWN - завершение работы системы;
POWEROFF - завершение работы системы и выключение питания, если возможно, или
перезагрузка;
- получение параметра системы с сохранением в файл (или буфер обмена, если
задано пустое имя файла):
Utils.exe SYSINFO <имя_параметра>
[<имя_файла>]
возможные значения параметра <имя_параметра>:
SYSID -
уникальный идентификатор системы, считываемый из оборудования;
GUID - генерация GUID;
GUIDHEX - генерация GUID с представлением в виде только шестнадцатеричных
символов;
USERSID - SID текущего пользователя;
USERLOGIN - логин текущего пользователя;
CPUSPEED - скорость процессора в MHz;
IP - локальный IP;
TIME - текущие дата и время;
ADOVERSION - версия ADO;
- операции с сервисами и библиотеками:
Utils.exe <операция>
<параметр> [/MachineName=<имя_компьютера>]
[/Timeout=<таймаут_в_миллисекундах>]
[/MHz=<скорость_процессора_для_таймаута>]
возможные значения параметра
<операция>:
STARTSVC - запустить сервис <параметр>;
STOPSVC - остановить сервис <параметр>;
STARTSCAPP - запустить COM-приложение <параметр> Службы компонентов;
STOPSCAPP - остановить COM-приложение <параметр> Службы компонентов;
REGOCX - зарегистрировать DLL или OCX <параметр>;
UNREGOCX - отменить регистрацию DLL или OCX <параметр>;
WAIT - ожидать <параметр> миллисекунд;
UPDATEINF - обновить inf-файл для OCX с именем <параметр>;
RUN - запустить программу (с параметрами в виде строки C++) <параметр>;
OPEN - открыть документ (с параметрами в виде строки C++) <параметр>;
- отсылка почты с использованием указанного SMTP-сервера:
Utils.exe SENDMAIL
<SMTP_сервер> <email_получателя> <email_отправителя>
<текстовый_файл>
- генерация запроса на сертификат CryptoAPI (для текущего пользователя):
Utils.exe REQUEST <алгоритм> <файл_запроса> <имя_сертификата_X500>
[<файл_публичного_ключа>]
<алгоритм> задает алгоритм криптопровайдера
CryptoAPI Microsoft RSA (RSA40, RSA128) или Крипто-Про ГОСТ (GOST94, GOST2001)
- генерация серверного запроса на сертификат CryptoAPI (для локальной машины):
Utils.exe SRVREQUEST <алгоритм> <файл_запроса> <имя_сертификата_X500>
[<файл_публичного_ключа>]
<алгоритм> задает алгоритм криптопровайдера
CryptoAPI Microsoft RSA (RSA40, RSA128) или Крипто-Про ГОСТ (GOST94, GOST2001)
- генерация запроса на сертификат CryptoAPI (для текущего пользователя) для
указанного секретного ключа:
Utils.exe KEYREQ <алгоритм> <файл_секретного_ключа>
<файл_запроса> <имя_сертификата_X500>
<алгоритм> задает алгоритм криптопровайдера
CryptoAPI Microsoft RSA (RSA40, RSA128) или Крипто-Про ГОСТ (GOST94, GOST2001)
- генерация серверного запроса на сертификат CryptoAPI (для локальной машины)
для указанного секретного ключа:
Utils.exe SRVKEYREQ <алгоритм>
<файл_секретного_ключа> <файл_запроса> <имя_сертификата_X500>
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001)
- выпуск сертификата по запросус помощью указанного центра сертификации
Microsoft:
Utils.exe ISSUE <файл_запроса> <файл_сертификата>
[<имя_центра_сертификации>]
- установка сертифиата на машине, на которой был сгенерирован запрос (для
текущего пользователя):
Utils.exe ACCEPT <файл_сертификата>
- установка серверного сертификата на машине, на которой был сгенерирован запрос
(для локальной машины):
Utils.exe SRVACCEPT <файл_сертификата>
- генерация секретного и публичного ключей CryptoAPI:
Utils.exe GENERATE
<алгоритм> <файл_секретного_ключа> <файл_публичного_ключа>
- генерация симметричного (сессионного) ключа с шифрованием его на собственных
секретном и публичном ключах:
Utils.exe GENSYM <алгоритм> <файл_секретного_ключа>
<файл_пубичного_ключа> <файл_симметричного_ключа>
- перешифрация симметричного ключа с собственных секретного и публичного ключей
на клиентский публичный ключ:
Utils.exe RECRYPTSYM <алгоритм> <файл_секретного_ключа>
<файл_публичного_ключа> <файл_симметричного_ключа> <файл_публичного_ключа_клиента>
- шифрация файла с помощью ключей CryptoAPI или ключей и сертификатов
Message-PRO:
Utils.exe ENCRYPT <алгоритм> <файл_данных> <зашифрованный_файл>
<файл_или_PSE_каталог_секретного_ключа> [/Password=<пароль>]
[/PublicKey=<файл_публичного_ключа>]
[/ClientPublicKey=<файл_публичного_ключа_клиента>]
[/SymmetricKey=<файл_симметричного_ключа>]
[/CACertificate=<файл_сертификата_центра_сертификации>]
[/CRL=<файл_списка_отозванных_сертификатов>] [/LocalMachine]
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001), а также библиотеку Сигнал-КОМ
Message-PRO (mespro.dll) с поддержкой RSA, ГОСТ, ГОСТ PSE;
<пароль>
может быть задан для секретного ключа Message-PRO;
<файл_публичного_ключа>
задается для CryptoAPI;
<файл_публичного_ключа_клиента> задает файл публичного
ключа клиента для CryptoAPI или сертификата клиента для
Message-PRO;
<файл_симметричного_ключа> задается для
CryptoAPI;
<файл_сертификата_центра_сертификации> и
<файл_списка_отозванных_сертификатов> задаются для Message-PRO;
параметр
"/LocalMachine" задает использование на сервере (для локальной машины)
для CryptoAPI;
- шифрация файла с помощью сертификатов в хранилищах CryptoAPI:
Utils.exe
CERTENCRYPT <алгоритм> <файл_данных> <зашифрованный_файл>
<серийный_номер_сертификата> <серийный_номер_сертификата_клиента>
[/SymmetricKey=<файл_симметричного_ключа>]
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001);
<серийный_номер_сертификата>
в хранилище персональных сертификатов "MY";
<серийный_номер_сертификата_клиента>
в хранилище клиентских сертификатов "CA";
- дешифрация файла с помощью ключей CryptoAPI или ключей и сертификатов
Message-PRO:
Utils.exe DECRYPT <алгоритм> <зашифрованный_файл> <расшифрованный_файл>
<файл_или_PSE_каталог_секретного_ключа> [/Password=<пароль>]
[/PublicKey=<файл_публичного_ключа>]
[/ClientPublicKey=<файл_публичного_ключа_клиента>]
[/SymmetricKey=<файл_симметричного_ключа>] [/LocalMachine]
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001), а также библиотеку Сигнал-КОМ
Message-PRO (mespro.dll) с поддержкой RSA, ГОСТ, ГОСТ PSE;
<пароль> может быть
задан для секретного ключа Message-PRO;
<файл_публичного_ключа> задает файл
публичного ключа для CryptoAPI или сертификата для Message-PRO;
<файл_публичного_ключа_клиента>
или <файл_симметричного_ключа> задаются для CryptoAPI;
параметр
"/LocalMachine" задает использование на сервере (для локальной машины) для CryptoAPI;
- дешифрация файла с помощью сертификатов в хранилищах CryptoAPI:
Utils.exe CERTDECRYPT
<алгоритм> <зашифрованый_файл> <расшифрованный_файл>
<серийный_номер_сертификата> <серийный_номер_сертификата_клиента>
[/SymmetricKey=<файл_симметричного_ключа>]
<алгоритм> задает алгоритм
криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001);
<серийный_номер_сертификата> в хранилище
персональных сертификатов "MY";
<серийный_номер_сертификата_клиента>
в хранилище клиентских сертификатов "CA";
- подпись файла с помощью ключей CryptoAPI или ключей и сертификатов
Message-PRO:
Utils.exe SIGN <алгоритм> <файл_данных> <файл_подписи>
<файл_или_PSE_каталог_секретного_ключа> [/Password=<пароль>]
[/PublicKey=<файл_публичного_ключа>]
[/CACertificate=<файл_сертификата_центра_сертификации>]
[/CRL=<файл_списк_отозванных_сертификатов>] [/LocalMachine] [/InsCertToSign]
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001), а также библиотеку Сигнал-КОМ
Message-PRO (mespro.dll) с поддержкой RSA, ГОСТ, ГОСТ PSE;
<пароль> может быть задан
для секретного ключа Message-PRO;
<файл_публичного_ключа> задает сертификат Message-PRO
для вставки его параметров в подпись;
<файл_сертификата_центра_сертификации> и
<файл_списка_отозванных_сертификатов> задаются для Message-PRO;
параметр
"/LocalMachine" задает использование на сервере (для локальной машины)
для CryptoAPI;
параметр "/InsCertToSign" задает режим вставки сертификата Message-PRO в
подпись;
- подпись файла с помощью сертификата в хранилище CryptoAPI:
Utils.exe CERTSIGN
<алгоритм> <файл_данных> <файл_подписи>
<хранилище_сертификата> <серийный_номер_сертификата> [/LocalMachine]
[/InsCertToSign]
<алгоритм> задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001);
<хранилище_сертификата> задает хранилище сертификата CryptoAPI с секретным
ключом для подписи, основные имена хранилищ:
MY - хранилище личных сертификатов, обычно, с секретными ключами;
CA -
хранилище клиентских сертификатов, обычно без секретных ключей;
ROOT - сертификаты центров сертификации;
TRUST -
доверенные сертификаты;
ADDRESSBOOK - сертификаты других пользователей;
параметр "/LocalMachine" задает
использование на сервере (для локальной машины)
для CryptoAPI;
параметр "/InsCertToSign" задает режим вставки сертификата CryptoAPI в подпись;
- проверка подписи файла с помощью ключей CryptoAPI или сертификатов
Message-PRO:
Utils.exe VERIFY <алгоритм> <файл_данных> <файл_подписи>
[/ClientPublicKey=<файл_публичного_ключа_клиента>]
[/PrivateKey=<файл_секретного_ключа>] [/CACertificate=<файл_сертификата_центра_сертификации>]
[/LocalMachine] [/InsCertToSign]
<алгоритм> задает алгоритм
криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001), а также библиотеку Сигнал-КОМ
Message-PRO (mespro.dll) с поддержкой RSA, ГОСТ, ГОСТ PSE;
<файл_публичного_ключа_клиента>
задает файл публичного ключа клиента для CryptoAPI или сертификата клиента для Message-PRO;
<файл_секретного_ключа>
задается для получения контейнера CryptoAPI (если не задан, используется временный контейнер);
<файл_сертификата_центра_сертификации>
задается при вставке сертификатов CryptoAPI и Message-PRO в подпись;
параметр
"/LocalMachine" задает использование на сервере (для локальной машины)
для CryptoAPI;
параметр "/InsCertToSign" задает режим проверки подписи вставленным в нее
сертификатом Message-PRO;
- проверка подписи файла с помощью сертификата в хранилище CryptoAPI:
Utils.exe CERTVERIFY <алгоритм> <файл_данных> <файл_подписи>
[/ClientStoreName=<хранилище_сертификата_клиента>]
[/ClientSerialNumber=<серийный_номер_сертификата_клиента>]
[/StoreName=<хранилище_сертификата>]
[/SerialNumber=<серийный_номер_сертификата>] [/LocalMachine] [/InsCertToSign]
<алгоритм>
задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40, RSA128) или
Крипто-Про ГОСТ (GOST94, GOST2001);
<хранилище_сертификата_клиента>,
<серийный_номер_сертификата_клиента>, <хранилище_сертификата>, <серийный_номер_сертификата>
задают хранилище и серийный номер клиентского сертификата CryptoAPI, хранилище и серийный номер
сертификата с секретным ключом для получения контейнера CryptoAPI (если серийный
номер не задан, используется временный контейнер), соответственно, основные
имена хранилищ:
MY - хранилище личных сертификатов, обычно, с секретными ключами;
CA -
хранилище клиентских сертификатов, обычно без секретных ключей;
ROOT - сертификаты центров
сертификации;
TRUST - доверенные сертификаты;
ADDRESSBOOK - сертификаты других
пользователей;
параметр "/LocalMachine" задает использование на сервере (для локальной машины)
для CryptoAPI;
параметр "/InsCertToSign" задает режим проверки подписи вставленным в нее
сертификатом CryptoAPI;
- связать секретный ключ сертификата CryptoAPI (с секретным ключом) с
сертификатом клиента (без секретного ключа):
Utils.exe LINKKEY <хранилище_сертификата>
<серийный_номер_сертификата> <хранилище_сертификата_клиента> <серийный_номер_сертификата_клиента>
[/LocalMachine]
<алгоритм> задает алгоритм криптопровайдера CryptoAPI Microsoft RSA (RSA40,
RSA128) или Крипто-Про ГОСТ (GOST94, GOST2001);
<хранилище_сертификата_клиента>,
<серийный_номер_сертификата_клиента>, <хранилище_сертификата>,
<серийный_номер_сертификата> задают хранилище и серийный номер клиентского сертификата
CryptoAPI, хранилище и серийный номер сертификата с секретным ключом для получения контейнера
CryptoAPI (если серийный номер не задан, используется временный контейнер), соответственно, основные
имена хранилищ:
MY - хранилище личных сертификатов, обычно, с секретными ключами;
CA -
хранилище клиентских сертификатов, обычно без секретных ключей;
ROOT - сертификаты центров
сертификации;
TRUST - доверенные сертификаты;
ADDRESSBOOK - сертификаты других
пользователей;
параметр "/LocalMachine" задает использование на сервере
(для локальной машины) для CryptoAPI.
Спасибо за публикацию в каталогах: |
|