forked from pgul/binkd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbinkd9x-ru.txt
179 lines (144 loc) · 12.6 KB
/
binkd9x-ru.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
binkd9x - это версия binkd, специально компилируемая для работы под
управлением Win9x-систем (Windows 95/98/ME). Дело в том, что в этих
операционных системах имеется документированная и при этом весьма
противная ошибка в консольной подсистеме. Из-за ошибки консоль не получает
никаких сигналов (сообщений), кроме клавиатурных CTRL_C_EVENT и
CTRL_BREAK_EVENT. На практике это приводит к невозможности автоматического
корректного завершения binkd, например, при shutdown'е или перезагрузке ОС.
binkd9x не является консольным приложением и создаёт окно, которое получает
сообщения системы. Фактически продолжает работать классический binkd, только
без консоли (в скрытом режиме). Это недостаток номер 1. При этом для Win9x
систем необходим отдельный бинарник. Это второй недостаток.
Также binkd9x умеет работать сервисом под Win9x-системами. Конечно, этот
режим работы нельзя сравнивать с сервисами под Windows NT/2000/XP по
функциональности, но на Win9x в некоторых случаях это бывает необходимо,
например, при частых Logoff'ах. binkd9x, установленный сервисом, загружается
при старте системы (до Logon'а) и не останавливается при Logoff'е.
binkd9x идентифицирует себя, как "Win9x", в отличие от обычного binkd для
Win32 ("Win32"). Впрочем, такое поведение можно легко исправить в config.h
В некоторых ситуациях binkd9x активирует временную консоль. При деактивации
консоли ожидается нажатие любой клавиши.
Отличие опций binkd9x от обычного binkd для Win32:
"-T minimize to Tray" в binkd9x недоступна, т.к. за неимением консоли
нечего и минимизировать.
"-v be verbose / dump version and quit", "-h print this help",
недокументированная "--help", а также при запуске без параметров binkd9x
активирует временную консоль перед выполнением соответствующего действия.
Новые опции:
"-i install Win9x service"
Инсталлирует сервис.
Сервисы прописываются в реестр в ветвь
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices".
Также в ветвь реестра "HKEY_LOCAL_MACHINE\Software\binkd9x" записывается
текущий путь на момент инсталляции binkd9x. Сервис binkd9x при старте
установит этот путь текущим. Если binkd9x при инсталляции был запущен
из command.com'а или из оболочки (например из Far'а), то CommandLine
процесса binkd9x содержит "короткое" имя файла (и "короткий" путь). Если
необходимо при инсталляции занести в реестр "длинное" имя файла, то можно
использовать команду start. Например:
start binkd9x-mingw -i binkd.cfg
При использовании команд "-i", "-u", "-t" binkd9x активирует временную
консоль. Опция "-q" блокирует активацию временной консоли для всех трёх
команд. При этом binkd9x будет сообщать пользователю лишь о важных ошибках
при помощи всплывающего сообщения. Данный режим удобен в основном
для автоматического управления сервисами командой "-t". Если установка
сервиса прошла успешно, binkd9x пытается запустить сервис.
"-u UNinstall Win9x service"
Удаление сервиса. Работает аналогично команде "-i". Можно удалить все
зарегистрированные сервисы, указав в опции "-S name" имя "all".
Пример:
1. binkd9x -u ==> удалить binkd9x-service
2. binkd9x -u -S Zol ==> удалить binkd9x-service-Zol
3. binkd9x -u -S all ==> удалить все binkd9x-сервисы
"-t cmd (start|stop|restart|status|install|uninstall) service(s)"
Команда для управления сервисами.
"-t install" Инсталлирует сервис.
Сервисы прописываются в ветвь реестра
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices".
Также в ветвь реестра "HKEY_LOCAL_MACHINE\Software\binkd9x" записывается
текущий путь на момент инсталляции binkd9x. Сервис binkd9x при старте
установит этот путь текущим. Если binkd9x при инсталляции был запущен
из command.com'а или из оболочки (например из Far'а), то CommandLine
процесса binkd9x содержит "короткое" имя файла (и "короткий" путь). Если
необходимо при инсталляции занести в реестр "длинное" имя файла, то можно
использовать команду start. Например:
start binkd9x-mingw -t install binkd.cfg
При использовании команды "-t" binkd9x активирует временную консоль.
Опция "-q" блокирует активацию временной консоли. При этом binkd9x будет
сообщать пользователю лишь о важных ошибках при помощи всплывающего
сообщения. Данный режим удобен в основном для автоматического управления
сервисами. Если установка сервиса прошла успешно, binkd9x пытается запустить
сервис.
"-t uninstall" удаляет сервис. Работает аналогично команде инсталляции. Можно
удалить все зарегистрированные сервисы, указав в опции "-S name" имя "all".
Пример:
1. binkd9x -t unistall ==> удалить binkd9x-service
2. binkd9x -t unistall -S Zol ==> удалить binkd9x-service-Zol
3. binkd9x -t unistall -S all ==> удалить все binkd9x-сервисы
"-t status" показывает состояние зарегистрированных в реестре сервисов
binkd9x.
"-t start" запускает сервисы.
"-t stop" останавливает сервисы.
"-t restart" перезапускает сервисы.
Во всех случаях по умолчанию действия производятся с сервисом
"binkd9x-service". Можно указать имя сервиса в опции "-S name".
Если вместо имени сервиса указать all, то операция будет проведена со всеми
зарегистрированными в реестре сервисами.
Использование опции "-q" с командой "-t status" особого смысла не имеет.
Пример:
1. binkd9x -t status ==> Выведет состояние сервиса binkd9x-service
2. binkd9x -t status -S local
==> Выведет состояние сервиса binkd9x-service-local
3. binkd9x -t status -S all
==> Выведет состояние всех зарегистрированных сервисов
4. binkd9x -t status -S all -q
==> см. 2., но практического смысла не имеет
(отсутствует консоль)
5. binkd9x -t start ==> Запустит сервис binkd9x-service, если тот не был
запущен
6. binkd9x -t start -S local
==> см. 5., но для сервиса binkd9x-service-local
7. binkd9x -t start -S all
==> см. 5., но для всех сервисов.
9. binkd9x -t start -q ==> см. 5., но не создаёт консоль (удобно для
автоматизации при помощи скриптов или bat-файлов).
10. binkd9x -t stop -q ==> аналогично 9., только остановка сервиса.
... ну и так далее...
"-S name set Win9x service name, all - use all services"
Указывает имя сервиса, с которым будет работать команда -t. Реальное имя
сервиса (которое прописывается в реестре) строится по принципу:
"binkd9x-service[-name]", где "binkd9x-service" - обязательная часть,
а "-name" добавляется при наличии параметра "-S name". Для всех команд, кроме
"-t install" допустимо использовать специальное имя сервиса all. В этом случае
указанная операция будет произведена над всеми инсталлированными сервисами.
Если в качестве "name" указано "binkd9x-service" или "binkd9x-service-*",
то имя сервиса будет использовано "как есть", т.е. без дополнительного
добавления префикса "binkd9x-service". Примеры:
1. binkd9x -t install binkd.cfg ==> binkd9x-service
2. binkd9x -t install -S local binkd.cfg ==> binkd9x-service-local
3. binkd9x -t install -S binkd9x-service binkd.cfg ==> binkd9x-service
4. binkd9x -t install -S binkd9x-service-local binkd.cfg
==> binkd9x-service-local
5. binkd9x -t status -S all ==> будет выведен статус
всех инсталлированных
сервисов
Сборка binkd9x:
В настоящий момент binkd9x собирается под MSVC и MinGW.
Технология сборки практически такая же, как и для обычного binkd.
Для MSVC необходимо только указать nmake макрос "BINKD9X", например:
1. nmake BINKD9X=1 ==> соберёт binkd9x с
Release-конфигурацией
2. nmake BINKD9X=1 DEBUG=1 ==> соберёт binkd9x с
Debug-конфигурацией
3. nmake BINKD9X=1 STATIC=1 ==> соберёт binkd9x с
использованием статической RTL-библиотеки
Под MinGW аналогично:
make BINKD9X=1
ВНИМАНИЕ! При попеременной компиляции binkd и binkd9x под MinGW необходимо
выполнять make clean или вручную удалить *.o, nt/*.o и ntlm/*.o файлы.
Если этого не сделать, то возможны ошибки компиляции или неправильное
функционирование binkd и binkd9x.
Я буду рад, если binkd9x пригодится кому-то кроме меня.
Alexander Reznikov, 2:4600/220@fidonet
$Id$