10004
TRADE_RETCODE_REQUOTE
Реквота
10006
TRADE_RETCODE_REJECT
Запрос отклонен
10007
TRADE_RETCODE_CANCEL
Запрос отменен трейдером
10008
TRADE_RETCODE_PLACED
Ордер размещен
10009
TRADE_RETCODE_DONE
Заявка выполнена
10010
TRADE_RETCODE_DONE_PARTIAL
Заявка выполнена частично
10011
TRADE_RETCODE_ERROR
Ошибка обработки запроса
10012
TRADE_RETCODE_TIMEOUT
Запрос отменен по истечению времени
10013
TRADE_RETCODE_INVALID
Неправильный запрос
10014
TRADE_RETCODE_INVALID_VOLUME
Неправильный объем в запросе
10015
TRADE_RETCODE_INVALID_PRICE
Неправильная цена в запросе
10016
TRADE_RETCODE_INVALID_STOPS
Неправильные стопы в запросе
10017
TRADE_RETCODE_TRADE_DISABLED
Торговля запрещена
10018
TRADE_RETCODE_MARKET_CLOSED
Рынок закрыт
10019
TRADE_RETCODE_NO_MONEY
Нет достаточных денежных средств для выполнения запроса
10020
TRADE_RETCODE_PRICE_CHANGED
Цены изменились
10021
TRADE_RETCODE_PRICE_OFF
Отсутствуют котировки для обработки запроса
10022
TRADE_RETCODE_INVALID_EXPIRATION
Неверная дата истечения ордера в запросе
10023
TRADE_RETCODE_ORDER_CHANGED
Состояние ордера изменилось
10024
TRADE_RETCODE_TOO_MANY_REQUESTS
Слишком частые запросы
10025
TRADE_RETCODE_NO_CHANGES
В запросе нет изменений
10026
TRADE_RETCODE_SERVER_DISABLES_AT
Автотрейдинг запрещен сервером
10027
TRADE_RETCODE_CLIENT_DISABLES_AT
Автотрейдинг запрещен клиентским терминалом
10028
TRADE_RETCODE_LOCKED
Запрос заблокирован для обработки
10029
TRADE_RETCODE_FROZEN
Ордер или позиция заморожены
10030
TRADE_RETCODE_INVALID_FILL
Указан неподдерживаемый тип исполнения ордера по остатку
10031
TRADE_RETCODE_CONNECTION
Нет соединения с торговым сервером
10032
TRADE_RETCODE_ONLY_REAL
Операция разрешена только для реальных счетов
10033
TRADE_RETCODE_LIMIT_ORDERS
Достигнут лимит на количество отложенных ордеров
10034
TRADE_RETCODE_LIMIT_VOLUME
Достигнут лимит на объем ордеров и позиций для данного символа
10035
TRADE_RETCODE_INVALID_ORDER
Неверный или запрещённый тип ордера
10036
TRADE_RETCODE_POSITION_CLOSED
Позиция с указанным POSITION_IDENTIFIER уже закрыта
10038
TRADE_RETCODE_INVALID_CLOSE_VOLUME
Закрываемый объем превышает текущий объем позиции
10039
TRADE_RETCODE_CLOSE_ORDER_EXIST
Для указанной позиции уже есть ордер на закрытие. Может возникнуть при работе в системе хеджинга:
- при попытке закрытия позиции встречной, если уже есть ордера на закрытие этой позиции
- при попытке полного или частичного закрытия, если суммарный объем уже имеющихся ордеров на закрытие и вновь выставляемого ордера превышает текущий объем позиции
10040
TRADE_RETCODE_LIMIT_POSITIONS
Количество открытых позиций, которое можно одновременно иметь на счете, может быть ограничено настройками сервера. При достижении лимита в ответ на выставление ордера сервер вернет ошибку TRADE_RETCODE_LIMIT_POSITIONS. Ограничение работает по-разному в зависимости от типа учета позиций на счете:
- Неттинговая система — учитывается количество открытых позиции. При достижении лимита платформа не позволит выставлять новые ордера, в результате исполнения которых может увеличиться количество открытых позиций. Фактически, платформа позволит выставлять ордера только по тем символам, по которым уже есть открытые позиции. В неттинговой системе при проверке лимита не учитываются текущие отложенные ордера, поскольку их исполнение может привести к изменению текущих позиций, а не увеличению их количества.
- Хеджинговая система — помимо открытых позиций, учитываются выставленные отложенные ордера, поскольку их срабатывание всегда приводит к открытию новой позиции. При достижении лимита платформа не позволит выставлять рыночные ордера на открытие позиций, а также отложенные ордера.
10041
TRADE_RETCODE_REJECT_CANCEL
Запрос на активацию отложенного ордера отклонен, а сам ордер отменен
10042
TRADE_RETCODE_LONG_ONLY
Запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции» (POSITION_TYPE_BUY)
10043
TRADE_RETCODE_SHORT_ONLY
Запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции» (POSITION_TYPE_SELL)
10044
TRADE_RETCODE_CLOSE_ONLY
Запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции«
10045
TRADE_RETCODE_FIFO_CLOSE
Запрос отклонен, так как для торгового счета установлено правило «Разрешено закрывать существующие позиции только по правилу FIFO» (ACCOUNT_FIFO_CLOSE=true)
10046
TRADE_RETCODE_HEDGE_PROHIBITED
Запрос отклонен, так как для торгового счета установлено правило «Запрещено открывать встречные позиции по одному символу«. Например, если на счете имеется позиция Buy, то пользователь не может открыть позицию Sell или выставить отложенный ордер на продажу. Правило может применяться только на счетах с хеджинговой системой учета (ACCOUNT_MARGIN_MODE=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING).
Все приказы на совершение торговых операций отправляются в виде структуры торгового запроса MqlTradeRequest с помощью функции OrderSend(). Результат выполнения этой функции помещается в структуру MqlTradeResult, поле retcode которой содержит код возврата торгового сервера.
10004 |
TRADE_RETCODE_REQUOTE |
Реквота |
10006 |
TRADE_RETCODE_REJECT |
Запрос отклонен |
10007 |
TRADE_RETCODE_CANCEL |
Запрос отменен трейдером |
10008 |
TRADE_RETCODE_PLACED |
Ордер размещен |
10009 |
TRADE_RETCODE_DONE |
Заявка выполнена |
10010 |
TRADE_RETCODE_DONE_PARTIAL |
Заявка выполнена частично |
10011 |
TRADE_RETCODE_ERROR |
Ошибка обработки запроса |
10012 |
TRADE_RETCODE_TIMEOUT |
Запрос отменен по истечению времени |
10013 |
TRADE_RETCODE_INVALID |
Неправильный запрос |
10014 |
TRADE_RETCODE_INVALID_VOLUME |
Неправильный объем в запросе |
10015 |
TRADE_RETCODE_INVALID_PRICE |
Неправильная цена в запросе |
10016 |
TRADE_RETCODE_INVALID_STOPS |
Неправильные стопы в запросе |
10017 |
TRADE_RETCODE_TRADE_DISABLED |
Торговля запрещена |
10018 |
TRADE_RETCODE_MARKET_CLOSED |
Рынок закрыт |
10019 |
TRADE_RETCODE_NO_MONEY |
Нет достаточных денежных средств для выполнения запроса |
10020 |
TRADE_RETCODE_PRICE_CHANGED |
Цены изменились |
10021 |
TRADE_RETCODE_PRICE_OFF |
Отсутствуют котировки для обработки запроса |
10022 |
TRADE_RETCODE_INVALID_EXPIRATION |
Неверная дата истечения ордера в запросе |
10023 |
TRADE_RETCODE_ORDER_CHANGED |
Состояние ордера изменилось |
10024 |
TRADE_RETCODE_TOO_MANY_REQUESTS |
Слишком частые запросы |
10025 |
TRADE_RETCODE_NO_CHANGES |
В запросе нет изменений |
10026 |
TRADE_RETCODE_SERVER_DISABLES_AT |
Автотрейдинг запрещен сервером |
10027 |
TRADE_RETCODE_CLIENT_DISABLES_AT |
Автотрейдинг запрещен клиентским терминалом |
10028 |
TRADE_RETCODE_LOCKED |
Запрос заблокирован для обработки |
10029 |
TRADE_RETCODE_FROZEN |
Ордер или позиция заморожены |
10030 |
TRADE_RETCODE_INVALID_FILL |
Указан неподдерживаемый тип исполнения ордера по остатку |
10031 |
TRADE_RETCODE_CONNECTION |
Нет соединения с торговым сервером |
10032 |
TRADE_RETCODE_ONLY_REAL |
Операция разрешена только для реальных счетов |
10033 |
TRADE_RETCODE_LIMIT_ORDERS |
Достигнут лимит на количество отложенных ордеров |
10034 |
TRADE_RETCODE_LIMIT_VOLUME |
Достигнут лимит на объем ордеров и позиций для данного символа |
10035 |
TRADE_RETCODE_INVALID_ORDER |
Неверный или запрещённый тип ордера |
10036 |
TRADE_RETCODE_POSITION_CLOSED |
Позиция с указанным POSITION_IDENTIFIER уже закрыта |
10038 |
TRADE_RETCODE_INVALID_CLOSE_VOLUME |
Закрываемый объем превышает текущий объем позиции |
10039 |
TRADE_RETCODE_CLOSE_ORDER_EXIST |
Для указанной позиции уже есть ордер на закрытие. Может возникнуть при работе в системе хеджинга:
|
10040 |
TRADE_RETCODE_LIMIT_POSITIONS |
Количество открытых позиций, которое можно одновременно иметь на счете, может быть ограничено настройками сервера. При достижении лимита в ответ на выставление ордера сервер вернет ошибку TRADE_RETCODE_LIMIT_POSITIONS. Ограничение работает по-разному в зависимости от типа учета позиций на счете:
|
10041 |
TRADE_RETCODE_REJECT_CANCEL |
Запрос на активацию отложенного ордера отклонен, а сам ордер отменен |
10042 |
TRADE_RETCODE_LONG_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешены только длинные позиции» (POSITION_TYPE_BUY) |
10043 |
TRADE_RETCODE_SHORT_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешены только короткие позиции» (POSITION_TYPE_SELL) |
10044 |
TRADE_RETCODE_CLOSE_ONLY |
Запрос отклонен, так как на символе установлено правило «Разрешено только закрывать существующие позиции« |
Предупреждения компилятора носят информационный характер и не являются сообщениями об ошибках.
21 |
Неполная запись даты в строке datetime |
22 |
Ошибочные числа в строке datetime для даты, требования: год 1970<=X<=3000 месяц 0<X<=12 день 0<X<= 31/30/28(29)…. |
23 |
Ошибочные числа в строке datetime для времени, требования: час 0<=X<24 минута 0<=X<60 |
24 |
Некорректный цвет в формате RGB: одна из компонент RGB меньше 0 или больше 255 |
25 |
Неизвестный символ эскейп последовательности. Известные: n r t \ » ’ X x |
26 |
Слишком большой объем локальных переменных (>512кб) функции, уменьшите их количество |
29 |
Перечисление уже определено (дублирование) – члены будут добавлены к первому определению |
30 |
Переопределение макроса |
31 |
Переменная объявлена, но нигде не используется |
32 |
Конструктор должен иметь тип void |
33 |
Деструктор должен иметь тип void |
34 |
Константа не вмещается в диапазон целых (X>_UI64_MAX || X<_I64_MIN) и будет преобразована в тип double |
35 |
Слишком длинный HEX больше 16 значащих символов (обрезаются старшие полубайты) |
36 |
Нет ни одного полубайта в HEX строке «0x» |
37 |
Нет ни одной функции — нечего будет выполнять |
38 |
Используется неинициализированная переменная |
41 |
Функция не имеет тела, но и не вызывается |
43 |
Возможны потери данных при преобразовании типа. Пример: int x=(double)z; |
44 |
Потеря точности(данных) при преобразовании константы. Пример: int x=M_PI |
45 |
Несовпадение знаков операндов в операциях сравнения. Пример: (char)c1>(uchar)c2 |
46 |
Проблемы с импортом функций – требуется объявление #import либо импорт функций уже закрыт |
47 |
Описание слишком большое – лишние символы не будут включены в исполняемый файл |
48 |
Количество индикаторных буферов объявлено меньше, чем требуется |
49 |
Не указан цвет для отрисовки графической серии в индикаторе |
50 |
Нет ни одной графической серии для отображения индикатора |
51 |
Не обнаружена функция-обработчик ‘OnStart» в скрипте |
52 |
Функция-обработчик ‘OnStart» определена с неверными параметрами |
53 |
Функция ‘OnStart’ может быть определена только в скрипте |
54 |
Функция ‘OnInit’ определена с неверными параметрами |
55 |
Функция ‘OnInit’ не используется в скриптах |
56 |
Функция ‘OnDeinit’ определена с неверными параметрами |
57 |
Функция ‘OnDeinit’ не используется в скриптах |
58 |
Определены две функции ‘OnCalculate’. Будет использована OnCalculate() на одном ценовом массиве |
59 |
Обнаружено переполнение при вычислении сложной целочисленной константы |
60 |
Возможно, переменная неинициализирована. |
61 |
Данное объявление делает недоступным обращение к локальной переменной, объявленной на указанной строке |
62 |
Данное объявление делает недоступным обращение к глобальной переменной, объявленной на указанной строке |
63 |
Не может быть использовано для статических массивов |
64 |
Данное объявление делает недоступным обращение к предопределенной переменной |
65 |
Значение выражения всегда true/false |
66 |
Использование переменной или выражения типа bool в математических операциях является небезопасным |
67 |
Результат применения оператора унарного минуса к беззнаковому типу ulong неопределен |
68 |
Версия, указанная в свойстве #property version, недопустима для размещения в разделе Маркет, правильный формат #property version «XXX.YYY» |
69 |
Отсутствует выражение для выполнения по условию |
70 |
Неверный возвращаемый тип функции или некорректные параметры при объявлении функции-обработчика события |
71 |
Требуется явное приведение структур к одному типу |
72 |
Данное объявление делает недоступным прямое обращение к члену класса, объявленному на указанной строке. Доступ будет возможен только с помощью операции разрешения контекста :: |
73 |
Константа в двоичной записи слишком велика, старшие разряды будут отброшены |
74 |
Параметр в методе наследуемого класса отличается модификатором const, дочерняя функция перегрузила функцию родителя |
75 |
Отрицательное или слишком большое значения смещения в битовой операции сдвига, результат выполнения неопределён |
76 |
Функция должна вернуть значение |
77 |
Функция типа void не должна возвращать значение |
78 |
Не все варианты выполнения возвращают значение |
79 |
Выражения на глобальном уровне не разрешены |
80 |
Возможна ошибка в последовательности выполнения операций, используйте скобки для явного указания порядка |
81 |
Найдено два вида вызова OnCalCulate(). Вызываться будет вариант с использованием таймсерий OHLC |
82 |
Структура не содержит членов, размер будет приравнен 1 байту |
83 |
Нет обработки результата выполнения функции |
84 |
Индикатор, включаемый как ресурс, скомпилирован в режиме отладки. Это снижает его производительность. Для повышения скорости работы его нужно перекомпилировать |
85 |
Слишком большой код символа в строке, должен быть в диапазоне от 0 до 65535 |
86 |
Нераспознанный служебный символ в строке |
87 |
Не указано свойство индикатора, задающее вывод в главное окно или в отдельное подокно. Будет применено свойство #property indicator_chart_window |
MetaEdtior 5, редактор mql5-программ, выдает сообщения об ошибках программы, обнаруженных встроенным компилятором на стадии компиляции. Список этих ошибок приведен ниже в таблице. Для компиляции исходного кода в исполняемый нажмите F7. Программы с ошибками не могут быть скомпилированы, пока ошибки, указанные компилятором, не будут устранены.
100 |
Ошибка чтения файла |
101 |
Ошибка открытия *.EX5 файла для записи |
103 |
Недостаточно свободной памяти для завершения компиляции |
104 |
Нераспознанная компилятором пустая синтаксическая единица |
105 |
Некорректное имя файла в #include |
106 |
Ошибка доступа к файлу в #include (возможно файл не существует) |
108 |
Неподходящее имя для #define |
109 |
Неизвестная команда препроцессора (допустимы #include,#define,#property,#import) |
110 |
Неизвестный для компилятора символ |
111 |
Функция не реализована (описание есть, тела нет) |
112 |
Пропущена двойная кавычка («) |
113 |
Пропущена открывающая угловая скобка (<) или двойная кавычка («) |
114 |
Пропущена одинарная кавычка (‘) |
115 |
Пропущена закрывающая угловая скобка «>» |
116 |
Не указан тип в объявлении |
117 |
Нет оператора возврата return или имеется не во всех ветках выполнения |
118 |
Ожидалась открывающая скобка параметров вызова |
119 |
Ошибка записи EX5 |
120 |
Некорректный доступ к элементу массива |
121 |
Функция не имеет тип void и оператор return должен вернуть значение |
122 |
Некорректное объявление деструктора |
123 |
Отсутствует двоеточие «:» |
124 |
Переменная уже объявлена |
125 |
Переменная с таким идентификатором уже объявлена |
126 |
Имя переменной слишком длинное (>250 символов) |
127 |
Структура с таким идентификатором уже определена |
128 |
Структура не определена |
129 |
Член структуры с таким именем уже определен |
130 |
Нет такого члена структуры |
131 |
Нарушена парность квадратных скобок |
132 |
Ожидается открывающая круглая скобка «(« |
133 |
Несбалансированные фигурные скобки ( отсутствует «}» ) |
134 |
Сложно для компиляции (слишком большое ветвление, внутренний стек уровней переполнен) |
135 |
Ошибка открытия файла на чтение |
136 |
Недостаточно памяти для загрузки исходного файла в память |
137 |
Ожидается переменная |
138 |
Ссылка не может быть инициализирована |
140 |
Ожидалось присваивание (возникает при объявлении) |
141 |
Ожидается открывающая фигурная скобка «{« |
142 |
Параметр может быть только динамическим массивом |
143 |
Использование типа «void» недопустимо |
144 |
Нет пары для «)» или «]», т.е. отсутствует «(» или «[« |
145 |
Нет пары для «(» или «[«, т.е. отсутствует «)» или «]» |
146 |
Некорректная размерность массива |
147 |
Слишком много параметров (>64) |
149 |
Этот токен тут не ожидается |
150 |
Недопустимое использование операции (неправильные операнды) |
151 |
Выражение типа void недопустимо |
152 |
Ожидается оператор |
153 |
Неправильное использование break |
154 |
Ожидается точка с запятой «;» |
155 |
Ожидается запятая «,» |
156 |
Тип должен быть определен как класс, а не как структура |
157 |
Ожидалось выражение |
158 |
В HEX встречается «не HEX символ» или слишком длинное число (количество цифр > 511) |
159 |
Строка-константа имеет более 65534 символов |
160 |
Определение функции здесь недопустимо |
161 |
Неожиданный конец программы |
162 |
Форвардная декларация для структур запрещена |
163 |
Функция с таким именем уже определена и имеет иной тип возвращаемого значения |
164 |
Функция с таким именем уже определена и имеет иной набор параметров |
165 |
Функция с таким именем уже определена и реализована |
166 |
Перегрузка функции для данного вызова не найдена |
167 |
Функция с возвращаемым значением типа void не может возвращать значение |
168 |
Функция не определена |
170 |
Ожидается значение |
171 |
В выражении case допустимы только целочисленные константы |
172 |
Значение для case в этом switch уже использовано |
173 |
Ожидается целочисленное значение |
174 |
В выражении #import ожидается имя файла |
175 |
Выражения на глобальном уровне не допустимы |
176 |
Пропущена круглая скобка «)» перед «;» |
177 |
Слева от знака равенства предполагается переменная |
178 |
Результат выражения не используется |
179 |
Объявление переменных в case недопустимо |
180 |
Неявное преобразование из строки в число |
181 |
Неявное преобразование числа в строку |
182 |
Неоднозначный вызов перегруженной функции (подходят несколько перегрузок) |
183 |
Недопустимый else без соответствующего if |
184 |
Недопустимый case или default без соответствующего switch |
185 |
Недопустимое использование эллипсиса |
186 |
Инициализирующая последовательность имеет большее количество элементов чем инициализируемая переменная |
187 |
Ожидается константа для case |
188 |
Требуется константное выражение |
189 |
Константная переменная не может быть изменена |
190 |
Ожидается закрывающая скобка или запятая (объявление члена массива) |
191 |
Идентификатор перечисления уже используется |
192 |
Перечисление не может иметь модификаторов доступа (const, extern, static) |
193 |
Член перечисления уже объявлен с другим значением |
194 |
Существует переменная, определенная с таким же именем |
195 |
Существует структура, определенная с таким же именем |
196 |
Ожидается имя члена перечисления |
197 |
Ожидается целочисленное выражение |
198 |
Деление на ноль в константном выражении |
199 |
Неверное количество параметров в функции |
200 |
Параметром по ссылке должна быть переменная |
201 |
Ожидается переменная такого же типа для передачи по ссылке |
202 |
Константная переменная не может быть передана по неконстантной ссылке |
203 |
Требуется целочисленная положительная константа |
204 |
Ошибка доступа к защищенному члену класса |
205 |
Импорт уже определен по другому пути |
208 |
Исполняемый файл не создан |
209 |
Для индикатора не найдена точка входа ‘OnCalculate’ |
210 |
Оператор continue может быть использован только внутри цикла |
211 |
Ошибка доступа к private(закрытому) члену класса |
213 |
Метод структуры или класса не объявлен |
214 |
Ошибка доступа к private(закрытому) методу класса |
216 |
Копирование структур с объектами недопустимо |
218 |
Выход индекса за границы массива |
219 |
Недопустима инициализация массивов в объявлении структуры или класса |
220 |
Конструктор класса не может иметь параметров |
221 |
Деструктор класса не может иметь параметров |
222 |
Метод класса или структуры с таким именем и параметрами уже объявлен |
223 |
Ожидается операнд |
224 |
Метод класса или структуры с таким именем есть, но с другими параметрами (объявление!=реализация) |
225 |
Импортируемая функция не описана |
226 |
Функция ZeroMemory() не применима для классов с защищенными членами или наследованием |
227 |
Неоднозначный вызов перегруженной функции (точное совпадение параметров для нескольких перегрузок) |
228 |
Ожидается имя переменной |
229 |
Ссылку нельзя объявить в этом месте |
230 |
Уже используется в качестве имени перечисления |
232 |
Ожидается класс или структура |
235 |
Нельзя вызывать delete для удаления массива |
236 |
Ожидается оператор ‘ while ‘ |
237 |
В delete должен быть указатель |
238 |
default для этого switch уже есть |
239 |
Синтаксическая ошибка |
240 |
Escape-последовательность может встретиться только в строках ( начинается с ‘’ ) |
241 |
Требуется массив – квадратная скобка ‘[‘ не относится к массиву либо в качестве параметра-массива подают не массив |
242 |
Не может быть инициализировано посредством инициализирующей последовательности |
243 |
Импорт не определен |
244 |
Ошибка оптимизатора на синтаксическом дереве |
245 |
Объявлено слишком много структур (упростите программу) |
246 |
Преобразование параметра недопустимо |
247 |
Некорректное использование оператора delete |
248 |
Нельзя объявить указатель на ссылку |
249 |
Нельзя объявить ссылку на ссылку |
250 |
Нельзя объявить указатель на указатель |
251 |
Недопустимо объявление структуры в списке параметров |
252 |
Недопустимая операция приведения типов |
253 |
Указатель можно объявить только для класса или структуры |
256 |
Необъявленный идентификатор |
257 |
Ошибка оптимизатора исполняемого кода |
258 |
Ошибка генерации исполняемого кода |
260 |
Недопустимое выражение для оператора switch |
261 |
Переполнение пула строковых констант, упростите программу |
262 |
Невозможно преобразовать к перечислению |
263 |
Нельзя использовать virtual для данных (членов класса или структуры) |
264 |
Нельзя вызвать защищенный метод класса |
265 |
Переопределяемая виртуальная функция возвращает другой тип |
266 |
Класс нельзя наследовать от структуры |
267 |
Структуру нельзя наследовать от класса |
268 |
Конструктор не может быть виртуальным (спецификатор virtual недопустим) |
269 |
Структура не может иметь виртуальных методов |
270 |
Функция должна иметь тело |
271 |
Перегрузка системных функций (функций терминала) запрещена |
272 |
Спецификатор const недопустим для функций, не являющихся членом класса или структуры |
274 |
Нельзя менять члены класса в константном методе |
276 |
Неподходящая инициализирующая последовательность |
277 |
Пропущено значение по умолчанию для параметра (специфика объявления параметров по умолчанию) |
278 |
Переопределение параметра по умолчанию (в объявлении и реализации разные значения) |
279 |
Нельзя вызвать неконстантный метод для константного объекта |
280 |
Для доступа к членам требуется объект (поставлена точка для не класса/структуры) |
281 |
Имя уже объявленной структуры нельзя использовать при объявлении |
284 |
Неразрешенное преобразование (при закрытом наследовании) |
285 |
Структуры и массивы не могут быть использованы в качестве input-переменных |
286 |
Спецификатор const недопустим для конструктора/деструктора |
287 |
Неправильное строковое выражение для типа datetime |
288 |
Неизвестное свойство (#property) |
289 |
Некорректное значение для свойства |
290 |
Некорректный индекс для свойства в #property |
291 |
Пропущен параметр вызова – < func(x,) > |
293 |
Объект должен быть передан по ссылке |
294 |
Массив должен быть передан по ссылке |
295 |
Функция была декларирована как экспортируемая |
296 |
Функция не была декларирована как экспортируемая |
297 |
Экспортировать импортируемую функцию нельзя |
298 |
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) |
299 |
Должен быть класс |
300 |
Секция #import не закрыта |
302 |
Несоответствие типов |
303 |
extern-переменная уже инициализирована |
304 |
Не найдено ни одной экспортируемой функции или стандартной точки входа |
305 |
Явный вызов конструктора запрещен |
306 |
Метод был объявлен константным |
307 |
Метод не был объявлен константным |
308 |
Некорректный размер ресурсного файла |
309 |
Некорректное имя ресурса |
310 |
Ошибка открытия файла ресурса |
311 |
Ошибка чтения файла ресурса |
312 |
Неизвестный тип ресурса |
313 |
Некорректный путь к файлу ресурса |
314 |
Указанное имя ресурса уже используется |
315 |
Ожидались параметры макроса |
316 |
После имени макроса должен быть пробел |
317 |
Ошибка в описании параметров макроса |
318 |
Неверное число параметров при использовании макроса |
319 |
Превышение максимального количества(16) параметров для макроса |
320 |
Макрос слишком сложный, требуется упрощение |
321 |
Параметром EnumToString() может быть только перечисление |
322 |
Имя ресурса слишком длинное |
323 |
Неподдерживаемый формат изображения (допустим только BMP-формат с глубиной цвета 24 или 32 бита) |
324 |
Объявление массива внутри оператора запрещено |
325 |
Функцию можно определить только на глобальном уровне |
326 |
Данное объявление недопустимо для текущей области видимости (области определения) |
327 |
Инициализация статичных переменных значениями локальных недопустима |
328 |
Недопустимое объявление массива объектов, не имеющих конструктора по умолчанию |
329 |
Список инициализации разрешен только для конструкторов |
330 |
Отсутствует определение функции после списка инициализации |
331 |
Список инициализации пуст |
332 |
Инициализация массива в конструкторе запрещена |
333 |
В списке инициализации запрещено инициализировать члены родительского класса |
334 |
Ожидалось выражение целого типа |
335 |
Требуемый объем памяти для массива превышает максимально допустимое значение |
336 |
Требуемый объем памяти для структуры превышает максимально допустимое значение |
337 |
Требуемый объем памяти для переменных, объявленных на глобальном уровне, превышает максимально допустимое значение |
338 |
Требуемый объем памяти для локальных переменных превышает максимально допустимое значение |
339 |
Конструктор не определен |
340 |
Недопустимое имя для файла иконки |
341 |
Не удалось открыть файла иконки по указанному пути |
342 |
Файл иконки некорректен и не соответствует формату ICO |
343 |
Повторная инициализация члена в конструкторе класса/структуры с помощью списка инициализации |
344 |
Инициализация статических членов в списке инициализации конструктора не допускается |
345 |
Инициализация нестатического члена класса/структуры на глобальном уровне запрещена |
346 |
Имя метода класса/структуры совпадает с ранее объявленным именем члена |
347 |
Имя члена класса/структуры совпадает с ранее объявленным именем метода |
348 |
Виртуальная функция не может быть объявлена как static |
349 |
Модификатор const недопустим для статической функции |
350 |
Конструктор или деструктор не могут быть статическими |
351 |
Нельзя обращаться к нестатическому члену/методу класса или структуры из статической функции |
352 |
После ключевого слова operator ожидается перегружаемая операция (+,-,[],++,— и т.д.) |
353 |
Не все операции можно перегружать в MQL5 |
354 |
Определение не соответствует объявлению |
355 |
Указано неверное количество параметров для оператора |
356 |
Не обнаружено ни одной функции-обработчика события |
357 |
Методы не могут быть экспортируемыми |
358 |
Нельзя приводить указатель на константный объект к указателю на неконстантный объект |
359 |
Шаблоны классов пока не поддерживаются |
360 |
Перегрузка шаблонов функций пока не поддерживается |
361 |
Невозможно применить шаблон функции |
362 |
Неоднозначный параметр в шаблоне функции (подходят несколько типов параметра) |
363 |
Невозможно определить к какому типу параметра приводить аргумент шаблона функции |
364 |
Неверное количество параметров в шаблоне функции |
365 |
Шаблон функции не может быть виртуальным |
366 |
Шаблоны функций не могут быть экспортированы |
367 |
Нельзя импортировать шаблоны функций |
368 |
Структуры, содержащие объекты, недопустимы |
369 |
Массивы строк и структуры, содержащие объекты, недопустимы |
370 |
Статический член класса/структуры должен быть явно инициализирован |
371 |
Ограничение компилятора: строка не может содержать более 65 535 символов |
372 |
Несогласованные #ifdef/#endif |
373 |
Результатом выполнения функции не может быть объект класса, так как отсутствует конструктор копирования |
374 |
Нельзя использовать нестатические члены и/или методы при инициализации статической переменной |
375 |
OnTesterInit() нельзя использовать без объявления обработчика OnTesterDeinit() |
376 |
Имя локальной переменной совпадает с именем одного из параметров функции |
377 |
Нельзя использовать макросы __FUNCSIG__ и __FUNCTION__ вне тела функции |
378 |
Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из DLL, которые возвращают структуру или указатель в качестве результата |
379 |
Ошибка при использовании шаблона |
380 |
Не используется |
381 |
Недопустимый синтаксис при объявлении чисто виртуальной функции, разрешено «=NULL» или «=0» |
382 |
Только виртуальные функции могут быть объявлены со спецификатором чисто виртуальной функции («=NULL» или «=0») |
383 |
Нельзя создать экземпляр абстрактного класса |
384 |
Для динамического приведения с помощью оператора dynamic_cast типом назначения должен быть указатель на пользовательский тип |
385 |
Ожидается тип «указатель на функцию» |
386 |
Указатели на методы не поддерживаются |
387 |
Ошибка – невозможно определить тип указателя на функцию |
388 |
Приведение типа недоступно из-за закрытого наследования |
389 |
Переменная с модификатором const должна быть проинициализирована при объявлении |
393 |
В интерфейсе могут быть объявлены только методы с публичным доступом |
394 |
Недопустимое вложение интерфейса в другой интерфейс |
395 |
Интерфейс может наследоваться только от другого интерфейса |
396 |
Ожидается интерфейс |
397 |
Интерфейсы поддерживают только публичное наследование |
398 |
Интерфейс не может содержать члены |
399 |
Нельзя создавать объекты интерфейса напрямую, только через наследование |
GetLastError() – функция, возвращающая код последней ошибки, которая хранится в предопределенной переменной _LastError. Значение этой переменной можно сбросить в ноль функцией ResetLastError().
ERR_SUCCESS |
0 |
Операция выполнена успешно |
ERR_INTERNAL_ERROR |
4001 |
Неожиданная внутренняя ошибка |
ERR_WRONG_INTERNAL_PARAMETER |
4002 |
Ошибочный параметр при внутреннем вызове функции клиентского терминала |
ERR_INVALID_PARAMETER |
4003 |
Ошибочный параметр при вызове системной функции |
ERR_NOT_ENOUGH_MEMORY |
4004 |
Недостаточно памяти для выполнения системной функции |
ERR_STRUCT_WITHOBJECTS_ORCLASS |
4005 |
Структура содержит объекты строк и/или динамических массивов и/или структуры с такими объектами и/или классы |
ERR_INVALID_ARRAY |
4006 |
Массив неподходящего типа, неподходящего размера или испорченный объект динамического массива |
ERR_ARRAY_RESIZE_ERROR |
4007 |
Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива |
ERR_STRING_RESIZE_ERROR |
4008 |
Недостаточно памяти для перераспределения строки |
ERR_NOTINITIALIZED_STRING |
4009 |
Неинициализированная строка |
ERR_INVALID_DATETIME |
4010 |
Неправильное значение даты и/или времени |
ERR_ARRAY_BAD_SIZE |
4011 |
Запрашиваемый размер массива превышает 2 гигабайта |
ERR_INVALID_POINTER |
4012 |
Ошибочный указатель |
ERR_INVALID_POINTER_TYPE |
4013 |
Ошибочный тип указателя |
ERR_FUNCTION_NOT_ALLOWED |
4014 |
Системная функция не разрешена для вызова |
ERR_RESOURCE_NAME_DUPLICATED |
4015 |
Совпадении имени динамического и статического ресурсов |
ERR_RESOURCE_NOT_FOUND |
4016 |
Ресурс с таким именем в EX5 не найден |
ERR_RESOURCE_UNSUPPOTED_TYPE |
4017 |
Неподдерживаемый тип ресурса или размер более 16 MB |
ERR_RESOURCE_NAME_IS_TOO_LONG |
4018 |
Имя ресурса превышает 63 символа |
ERR_MATH_OVERFLOW |
4019 |
При вычислении математической функции произошло переполнение |
Графики |
||
ERR_CHART_WRONG_ID |
4101 |
Ошибочный идентификатор графика |
ERR_CHART_NO_REPLY |
4102 |
График не отвечает |
ERR_CHART_NOT_FOUND |
4103 |
График не найден |
ERR_CHART_NO_EXPERT |
4104 |
У графика нет эксперта, который мог бы обработать событие |
ERR_CHART_CANNOT_OPEN |
4105 |
Ошибка открытия графика |
ERR_CHART_CANNOT_CHANGE |
4106 |
Ошибка при изменении для графика символа и периода |
ERR_CHART_WRONG_PARAMETER |
4107 |
Ошибочное значение параметра для функции по работе с графиком |
ERR_CHART_CANNOT_CREATE_TIMER |
4108 |
Ошибка при создании таймера |
ERR_CHART_WRONG_PROPERTY |
4109 |
Ошибочный идентификатор свойства графика |
ERR_CHART_SCREENSHOT_FAILED |
4110 |
Ошибка при создании скриншота |
ERR_CHART_NAVIGATE_FAILED |
4111 |
Ошибка навигации по графику |
ERR_CHART_TEMPLATE_FAILED |
4112 |
Ошибка при применении шаблона |
ERR_CHART_WINDOW_NOT_FOUND |
4113 |
Подокно, содержащее указанный индикатор, не найдено |
ERR_CHART_INDICATOR_CANNOT_ADD |
4114 |
Ошибка при добавлении индикатора на график |
ERR_CHART_INDICATOR_CANNOT_DEL |
4115 |
Ошибка при удалении индикатора с графика |
ERR_CHART_INDICATOR_NOT_FOUND |
4116 |
Индикатор не найден на указанном графике |
Графические объекты |
||
ERR_OBJECT_ERROR |
4201 |
Ошибка при работе с графическим объектом |
ERR_OBJECT_NOT_FOUND |
4202 |
Графический объект не найден |
ERR_OBJECT_WRONG_PROPERTY |
4203 |
Ошибочный идентификатор свойства графического объекта |
ERR_OBJECT_GETDATE_FAILED |
4204 |
Невозможно получить дату, соответствующую значению |
ERR_OBJECT_GETVALUE_FAILED |
4205 |
Невозможно получить значение, соответствующее дате |
MarketInfo |
||
ERR_MARKET_UNKNOWN_SYMBOL |
4301 |
Неизвестный символ |
ERR_MARKET_NOT_SELECTED |
4302 |
Символ не выбран в MarketWatch |
ERR_MARKET_WRONG_PROPERTY |
4303 |
Ошибочный идентификатор свойства символа |
ERR_MARKET_LASTTIME_UNKNOWN |
4304 |
Время последнего тика неизвестно (тиков не было) |
ERR_MARKET_SELECT_ERROR |
4305 |
Ошибка добавления или удаления символа в MarketWatch |
Доступ к истории |
||
ERR_HISTORY_NOT_FOUND |
4401 |
Запрашиваемая история не найдена |
ERR_HISTORY_WRONG_PROPERTY |
4402 |
Ошибочный идентификатор свойства истории |
ERR_HISTORY_TIMEOUT |
4403 |
Превышен таймаут при запросе истории |
ERR_HISTORY_BARS_LIMIT |
4404 |
Количество запрашиваемых баров ограничено настройками терминала |
ERR_HISTORY_LOAD_ERRORS |
4405 |
Множество ошибок при загрузке истории |
ERR_HISTORY_SMALL_BUFFER |
4407 |
Принимающий массив слишком мал чтобы вместить все запрошенные данные |
Global_Variables |
||
ERR_GLOBALVARIABLE_NOT_FOUND |
4501 |
Глобальная переменная клиентского терминала не найдена |
ERR_GLOBALVARIABLE_EXISTS |
4502 |
Глобальная переменная клиентского терминала с таким именем уже существует |
ERR_GLOBALVARIABLE_NOT_MODIFIED |
4503 |
Не было модификаций глобальных переменных |
ERR_GLOBALVARIABLE_CANNOTREAD |
4504 |
Не удалось открыть и прочитать файл со значениями глобальных переменных |
ERR_GLOBALVARIABLE_CANNOTWRITE |
4505 |
Не удалось записать файл со значениями глобальных переменных |
ERR_MAIL_SEND_FAILED |
4510 |
Не удалось отправить письмо |
ERR_PLAY_SOUND_FAILED |
4511 |
Не удалось воспроизвести звук |
ERR_MQL5_WRONG_PROPERTY |
4512 |
Ошибочный идентификатор свойства программы |
ERR_TERMINAL_WRONG_PROPERTY |
4513 |
Ошибочный идентификатор свойства терминала |
ERR_FTP_SEND_FAILED |
4514 |
Не удалось отправить файл по ftp |
ERR_NOTIFICATION_SEND_FAILED |
4515 |
Не удалось отправить уведомление |
ERR_NOTIFICATION_WRONG_PARAMETER |
4516 |
Неверный параметр для отправки уведомления – в функцию SendNotification() передали пустую строку или NULL |
ERR_NOTIFICATION_WRONG_SETTINGS |
4517 |
Неверные настройки уведомлений в терминале (не указан ID или не выставлено разрешение) |
ERR_NOTIFICATION_TOO_FREQUENT |
4518 |
Слишком частая отправка уведомлений |
ERR_FTP_NOSERVER |
4519 |
Не указан FTP сервер |
ERR_FTP_NOLOGIN |
4520 |
Не указан FTP логин |
ERR_FTP_FILE_ERROR |
4521 |
Не найден файл в директории MQL5Files для отправки на FTP сервер |
ERR_FTP_CONNECT_FAILED |
4522 |
Ошибка при подключении к FTP серверу |
ERR_FTP_CHANGEDIR |
4523 |
На FTP сервере не найдена директория для выгрузки файла |
ERR_FTP_CLOSED |
4524 |
Подключение к FTP серверу закрыто |
Буферы пользовательских индикаторов |
||
ERR_BUFFERS_NO_MEMORY |
4601 |
Недостаточно памяти для распределения индикаторных буферов |
ERR_BUFFERS_WRONG_INDEX |
4602 |
Ошибочный индекс своего индикаторного буфера |
Свойства пользовательских индикаторов |
||
ERR_CUSTOM_WRONG_PROPERTY |
4603 |
Ошибочный идентификатор свойства пользовательского индикатора |
Account |
||
ERR_ACCOUNT_WRONG_PROPERTY |
4701 |
Ошибочный идентификатор свойства счета |
ERR_TRADE_WRONG_PROPERTY |
4751 |
Ошибочный идентификатор свойства торговли |
ERR_TRADE_DISABLED |
4752 |
Торговля для эксперта запрещена |
ERR_TRADE_POSITION_NOT_FOUND |
4753 |
Позиция не найдена |
ERR_TRADE_ORDER_NOT_FOUND |
4754 |
Ордер не найден |
ERR_TRADE_DEAL_NOT_FOUND |
4755 |
Сделка не найдена |
ERR_TRADE_SEND_FAILED |
4756 |
Не удалось отправить торговый запрос |
ERR_TRADE_CALC_FAILED |
4758 |
Не удалось вычислить значение прибыли или маржи |
Индикаторы |
||
ERR_INDICATOR_UNKNOWN_SYMBOL |
4801 |
Неизвестный символ |
ERR_INDICATOR_CANNOT_CREATE |
4802 |
Индикатор не может быть создан |
ERR_INDICATOR_NO_MEMORY |
4803 |
Недостаточно памяти для добавления индикатора |
ERR_INDICATOR_CANNOT_APPLY |
4804 |
Индикатор не может быть применен к другому индикатору |
ERR_INDICATOR_CANNOT_ADD |
4805 |
Ошибка при добавлении индикатора |
ERR_INDICATOR_DATA_NOT_FOUND |
4806 |
Запрошенные данные не найдены |
ERR_INDICATOR_WRONG_HANDLE |
4807 |
Ошибочный хэндл индикатора |
ERR_INDICATOR_WRONG_PARAMETERS |
4808 |
Неправильное количество параметров при создании индикатора |
ERR_INDICATOR_PARAMETERS_MISSING |
4809 |
Отсутствуют параметры при создании индикатора |
ERR_INDICATOR_CUSTOM_NAME |
4810 |
Первым параметром в массиве должно быть имя пользовательского индикатора |
ERR_INDICATOR_PARAMETER_TYPE |
4811 |
Неправильный тип параметра в массиве при создании индикатора |
ERR_INDICATOR_WRONG_INDEX |
4812 |
Ошибочный индекс запрашиваемого индикаторного буфера |
Стакан цен |
||
ERR_BOOKS_CANNOT_ADD |
4901 |
Стакан цен не может быть добавлен |
ERR_BOOKS_CANNOT_DELETE |
4902 |
Стакан цен не может быть удален |
ERR_BOOKS_CANNOT_GET |
4903 |
Данные стакана цен не могут быть получены |
ERR_BOOKS_CANNOT_SUBSCRIBE |
4904 |
Ошибка при подписке на получение новых данных стакана цен |
Файловые операции |
||
ERR_TOO_MANY_FILES |
5001 |
Не может быть открыто одновременно более 64 файлов |
ERR_WRONG_FILENAME |
5002 |
Недопустимое имя файла |
ERR_TOO_LONG_FILENAME |
5003 |
Слишком длинное имя файла |
ERR_CANNOT_OPEN_FILE |
5004 |
Ошибка открытия файла |
ERR_FILE_CACHEBUFFER_ERROR |
5005 |
Недостаточно памяти для кеша чтения |
ERR_CANNOT_DELETE_FILE |
5006 |
Ошибка удаления файла |
ERR_INVALID_FILEHANDLE |
5007 |
Файл с таким хэндлом уже был закрыт, либо не открывался вообще |
ERR_WRONG_FILEHANDLE |
5008 |
Ошибочный хэндл файла |
ERR_FILE_NOTTOWRITE |
5009 |
Файл должен быть открыт для записи |
ERR_FILE_NOTTOREAD |
5010 |
Файл должен быть открыт для чтения |
ERR_FILE_NOTBIN |
5011 |
Файл должен быть открыт как бинарный |
ERR_FILE_NOTTXT |
5012 |
Файл должен быть открыт как текстовый |
ERR_FILE_NOTTXTORCSV |
5013 |
Файл должен быть открыт как текстовый или CSV |
ERR_FILE_NOTCSV |
5014 |
Файл должен быть открыт как CSV |
ERR_FILE_READERROR |
5015 |
Ошибка чтения файла |
ERR_FILE_BINSTRINGSIZE |
5016 |
Должен быть указан размер строки, так как файл открыт как бинарный |
ERR_INCOMPATIBLE_FILE |
5017 |
Для строковых массивов должен быть текстовый файл, для остальных – бинарный |
ERR_FILE_IS_DIRECTORY |
5018 |
Это не файл, а директория |
ERR_FILE_NOT_EXIST |
5019 |
Файл не существует |
ERR_FILE_CANNOT_REWRITE |
5020 |
Файл не может быть переписан |
ERR_WRONG_DIRECTORYNAME |
5021 |
Ошибочное имя директории |
ERR_DIRECTORY_NOT_EXIST |
5022 |
Директория не существует |
ERR_FILE_ISNOT_DIRECTORY |
5023 |
Это файл, а не директория |
ERR_CANNOT_DELETE_DIRECTORY |
5024 |
Директория не может быть удалена |
ERR_CANNOT_CLEAN_DIRECTORY |
5025 |
Не удалось очистить директорию (возможно, один или несколько файлов заблокированы и операция удаления не удалась) |
ERR_FILE_WRITEERROR |
5026 |
Не удалось записать ресурс в файл |
ERR_FILE_ENDOFFILE |
5027 |
Не удалось прочитать следующую порцию данных из CSV-файла (FileReadString, FileReadNumber, FileReadDatetime, FileReadBool), так как достигнут конец файла |
Преобразование строк |
||
ERR_NO_STRING_DATE |
5030 |
В строке нет даты |
ERR_WRONG_STRING_DATE |
5031 |
В строке ошибочная дата |
ERR_WRONG_STRING_TIME |
5032 |
В строке ошибочное время |
ERR_STRING_TIME_ERROR |
5033 |
Ошибка преобразования строки в дату |
ERR_STRING_OUT_OF_MEMORY |
5034 |
Недостаточно памяти для строки |
ERR_STRING_SMALL_LEN |
5035 |
Длина строки меньше, чем ожидалось |
ERR_STRING_TOO_BIGNUMBER |
5036 |
Слишком большое число, больше, чем ULONG_MAX |
ERR_WRONG_FORMATSTRING |
5037 |
Ошибочная форматная строка |
ERR_TOO_MANY_FORMATTERS |
5038 |
Форматных спецификаторов больше, чем параметров |
ERR_TOO_MANY_PARAMETERS |
5039 |
Параметров больше, чем форматных спецификаторов |
ERR_WRONG_STRING_PARAMETER |
5040 |
Испорченный параметр типа string |
ERR_STRINGPOS_OUTOFRANGE |
5041 |
Позиция за пределами строки |
ERR_STRING_ZEROADDED |
5042 |
К концу строки добавлен 0, бесполезная операция |
ERR_STRING_UNKNOWNTYPE |
5043 |
Неизвестный тип данных при конвертации в строку |
ERR_WRONG_STRING_OBJECT |
5044 |
Испорченный объект строки |
Работа с массивами |
||
ERR_INCOMPATIBLE_ARRAYS |
5050 |
Копирование несовместимых массивов. Строковый массив может быть скопирован только в строковый, а числовой массив – в числовой |
ERR_SMALL_ASSERIES_ARRAY |
5051 |
Приемный массив объявлен как AS_SERIES, и он недостаточного размера |
ERR_SMALL_ARRAY |
5052 |
Слишком маленький массив, стартовая позиция за пределами массива |
ERR_ZEROSIZE_ARRAY |
5053 |
Массив нулевой длины |
ERR_NUMBER_ARRAYS_ONLY |
5054 |
Должен быть числовой массив |
ERR_ONEDIM_ARRAYS_ONLY |
5055 |
Должен быть одномерный массив |
ERR_SERIES_ARRAY |
5056 |
Таймсерия не может быть использована |
ERR_DOUBLE_ARRAY_ONLY |
5057 |
Должен быть массив типа double |
ERR_FLOAT_ARRAY_ONLY |
5058 |
Должен быть массив типа float |
ERR_LONG_ARRAY_ONLY |
5059 |
Должен быть массив типа long |
ERR_INT_ARRAY_ONLY |
5060 |
Должен быть массив типа int |
ERR_SHORT_ARRAY_ONLY |
5061 |
Должен быть массив типа short |
ERR_CHAR_ARRAY_ONLY |
5062 |
Должен быть массив типа char |
ERR_STRING_ARRAY_ONLY |
5063 |
Должен быть массив типа string |
Работа с OpenCL |
||
ERR_OPENCL_NOT_SUPPORTED |
5100 |
Функции OpenCL на данном компьютере не поддерживаются |
ERR_OPENCL_INTERNAL |
5101 |
Внутренняя ошибка при выполнении OpenCL |
ERR_OPENCL_INVALID_HANDLE |
5102 |
Неправильный хэндл OpenCL |
ERR_OPENCL_CONTEXT_CREATE |
5103 |
Ошибка при создании контекста OpenCL |
ERR_OPENCL_QUEUE_CREATE |
5104 |
Ошибка создания очереди выполнения в OpenCL |
ERR_OPENCL_PROGRAM_CREATE |
5105 |
Ошибка при компиляции программы OpenCL |
ERR_OPENCL_TOO_LONG_KERNEL_NAME |
5106 |
Слишком длинное имя точки входа (кернел OpenCL) |
ERR_OPENCL_KERNEL_CREATE |
5107 |
Ошибка создания кернел — точки входа OpenCL |
ERR_OPENCL_SET_KERNEL_PARAMETER |
5108 |
Ошибка при установке параметров для кернел OpenCL (точки входа в программу OpenCL) |
ERR_OPENCL_EXECUTE |
5109 |
Ошибка выполнения программы OpenCL |
ERR_OPENCL_WRONG_BUFFER_SIZE |
5110 |
Неверный размер буфера OpenCL |
ERR_OPENCL_WRONG_BUFFER_OFFSET |
5111 |
Неверное смещение в буфере OpenCL |
ERR_OPENCL_BUFFER_CREATE |
5112 |
Ошибка создания буфера OpenCL |
ERR_OPENCL_TOO_MANY_OBJECTS |
5113 |
Превышено максимальное число OpenCL объектов |
ERR_OPENCL_SELECTDEVICE |
5114 |
Ошибка выбора OpenCL устройства |
Работа с WebRequest |
||
ERR_WEBREQUEST_INVALID_ADDRESS |
5200 |
URL не прошел проверку |
ERR_WEBREQUEST_CONNECT_FAILED |
5201 |
Не удалось подключиться к указанному URL |
ERR_WEBREQUEST_TIMEOUT |
5202 |
Превышен таймаут получения данных |
ERR_WEBREQUEST_REQUEST_FAILED |
5203 |
Ошибка в результате выполнения HTTP запроса |
Пользовательские символы |
||
ERR_NOT_CUSTOM_SYMBOL |
5300 |
Должен быть указан пользовательский символ |
ERR_CUSTOM_SYMBOL_WRONG_NAME |
5301 |
Некорректное имя пользовательского символа. В имени символа можно использовать только латинские буквы без знаков препинания, пробелов и спецсимволов (допускаются «.», «_», «&» и «#»). Не рекомендуется использовать символы <, >, :, «, /,, |, ?, *. |
ERR_CUSTOM_SYMBOL_NAME_LONG |
5302 |
Слишком длинное имя для пользовательского символа. Длина имени символа не должна превышать 32 знака с учётом завершающего 0 |
ERR_CUSTOM_SYMBOL_PATH_LONG |
5303 |
Слишком длинный путь для пользовательского символа. Длина пути не более 128 знаков с учётом «Custom\», имени символа, разделителей групп и завершающего 0 |
ERR_CUSTOM_SYMBOL_EXIST |
5304 |
Пользовательский символ с таким именем уже существует |
ERR_CUSTOM_SYMBOL_ERROR |
5305 |
Ошибка при создании, удалении или изменении пользовательского символа |
ERR_CUSTOM_SYMBOL_SELECTED |
5306 |
Попытка удалить пользовательский символ, выбранный в обзоре рынка (Market Watch) |
ERR_CUSTOM_SYMBOL_PROPERTY_WRONG |
5307 |
Неправильное свойство пользовательского символа |
ERR_CUSTOM_SYMBOL_PARAMETER_ERROR |
5308 |
Ошибочный параметр при установке свойства пользовательского символа |
ERR_CUSTOM_SYMBOL_PARAMETER_LONG |
5309 |
Слишком длинный строковый параметр при установке свойства пользовательского символа |
ERR_CUSTOM_TICKS_WRONG_ORDER |
5310 |
Не упорядоченный по времени массив тиков |
Пользовательские ошибки |
||
ERR_USER_ERROR_FIRST |
65536 |
С этого кода начинаются ошибки, задаваемые пользователем |
Обновлено 19.08.2021
Доброго времени суток, уважаемые читатели, сегодня решаем ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {D63B10C5-BB46-4990-A94F-E40B9D520160} и APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} в Windows server 2012 R2.
Ошибка 10016 в windows 10 и Windows Server
На сервере Windows Server 2012 R2 постоянно возникает ошибка 10016.
Имя журнала: Система
Источник: DistributedCOM
Код: 10016
{D63B10C5-BB46-4990-A94F-E40B9D520160}
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID
{D63B10C5-BB46-4990-A94F-E40B9D520160}
и APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276} или {316CDED5-E4AE-4B15-9113-7055D84DCC97} или {4839DDB7-58C2-48F5-8283-E1D1807D0D7D}
пользователю NT AUTHORITYСИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно). Это разрешение безопасности можно изменить с помощью средства администрирования служб компонентов.
The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
{6B3B8D23-FA8D-40B9-8DBD-B950333E2C52}
and APPID
{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}
to the user NT AUTHORITYLOCAL SERVICE SID (S-1-5-19) from address LocalHost (Using LRPC) running in the application container Unavailable SID (Unavailable). This security permission can be modified using the Component Services administrative tool.
Данная ошибка выскакивает, когда какая-то из утилит не может обратиться к DCOM объекту, чаще всего, это связано с недостаточностью разрешений. Был реализован шаблон кодирования, где код сначала пытается получить доступ к компонентам DCOM с одним набором параметров. Если первая попытка не удалась, она пытается снова с другим набором параметров. Причина, по которой он не пропускает первую попытку, заключается в том, что существуют сценарии, в которых он может быть успешным. В этих сценариях это предпочтительнее. Если вы не в курсе, что такое COM объекты и DCOM, то если по простому, это концепция для создания программного обеспечения на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно. На основе COM были созданы ActiveX, DCOM, COM+, DirectX, .Net.
- {316CDED5-E4AE-4B15-9113-7055D84DCC97} — Кнопка пуск (Immersive Shell) — интерфейс метро
- {4839DDB7-58C2-48F5-8283-E1D1807D0D7D} — ShellServiceHost
- {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} — RuntimeBroker
Подробнее вы можете почитать в вики https://ru.wikipedia.org/wiki/Component_Object_Model
Сначала нужно обновить Windows через центр обновления, и если не поможет, то делаем по очереди предложенные решения:
- Назначаем недостающие права на ветку с GUID номером {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} или другим, зависит от вашей ситуации с кодом ошибки 10016
- Удаление некоторых ключей реестра
- Использование скрипта PowerShell
Как исправить ошибку 10016 через назначение прав в реестре
- Сразу логинимся на проблемный сервер под администратором, чтобы не вводить всякий раз имя и пароль. Запускаем Regedit.
- Запускаем поиск (CTRL+F) и ищем второй из GUIDов в описании ошибки, т.е. APPID. В данном случае это «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}».
- Первый результат поиска должен быть в ключе HKEY_CLASSES_ROOTAppID. Наступаем на найденный GUID в левой панели и щелкаем правой кнопкой, выбираем Разрешения, а затем кнопку Дополнительно.
- В верхней части дополнительных параметров указан текущий владелец TrustedInstaller. Нажимаем рядом с ним ссылку Изменить.
- Нам нужно сделать владельцем локальную группу Администраторы. Затем кнопки Дополнительно, Поиск и выбираем в результатах поиска Администраторы.
- Ставим флажок «Заменить владельца подконтейнеров и объектов», кнопка ОК.
- После смены владельца мы можем изменять разрешения. В окне Разрешения на вкладке Безопасность даем для СИСТЕМА и Администраторы разрешение на полный доступ. ОК.
- Далее смотрим для нашего ключа HKEY_CLASSES_ROOTAppID{9CA88EE3-ACB7-47C8-AFC4-AB702511C276} значение параметра «(По умолчанию)» = «RuntimeBroker«.
8. В диспетчере серверов в правом верхнем углу меню Средства -> Службы компонентов. Открываем Компьютеры –> Мой компьютер –> Настройка DCOM. Правый клик по строке из п.7 RuntimeBroker, Свойства.
9. На вкладке Безопасность. В разделе Разрешения на запуск и активацию кнопка Изменить. Для группы СИСТЕМА разрешаем Локальный запуск и Локальная активация. ОК. Если вам runtimebroker не дает отредактировать настройки, то вам нужно дать права на него в реестре Windows
Открываем редактор реестра Windows. Переходим в ветку
HKEY_CLASSES_ROOTAppIDRuntimeBroker.exe
щелкаем по нему правым кликом и выбираем свойства.
Даем права для группы администраторы (Полный доступ)
Если не даст вам поставить, то вам нужно заменить владельца Trustinstaller на себя или группу администраторы. Как только дали права, идем опять в компоненты DCOM и выставляем права, как описывал выше.
10. Перезагружаем сервер, проверяем логи, по сути ошибку 10016 параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {D63B10C5-BB46-4990-A94F-E40B9D520160} и APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} вы не должны больше увидеть.
Как исправить ошибку 10016 через удаление ключей из ветки OLe
Данный метод подразумевает удаление нескольких ключей реестра, которые отвечают за проверку прав на COM объекты. Нас будет интересовать ветка реестра:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOle
Ole — эта ветка управляют параметрами запуска по умолчанию и разрешениями доступа, а также возможностями безопасности на уровне вызовов для приложений на основе COM, которые не вызывают CoInitializeSecurity. Только администраторы, создатель объекта и система имеют полный доступ к этой части реестра. Все остальные пользователи имеют доступ только для чтения.
Перед тем, как вы будите вносить изменения я вам советую на всякий случай сделать резервную копию реестра или ветки.
Щелкаем по контейнеру Ole правым кликом и из контекстного меню выберите пункт Экспорт.
Задаем имя экспортируемого ключа. В случае проблем вы всегда сможете его импортировать и вернуть все к исходному состоянию.
Теперь, чтобы исправить ошибку 10016 в Windows 10 или как у меня в Windows Server 2012 R2 или выше, вам необходимо удалить четыре ключа:
- DefaultAccessPermission — Определяет список разрешений доступа по умолчанию для компьютера. Устанавливает список контроля доступа (ACL) участников, которые могут получить доступ к классам, для которых нет настройки AccessPermission . Этот ACL используется только приложениями, которые не вызывают CoInitializeSecurity и не имеют значения AccessPermission под своим ключом AppID. Среда выполнения COM на сервере проверяет ACL, описываемый этим значением, при олицетворении вызывающей стороны, которая пытается подключиться к объекту, и ее успех определяет, разрешен или запрещен доступ. Если проверка доступа не пройдена, соединение с объектом будет запрещено. Если это именованное значение не существует, только серверу участника и локальной системе разрешается вызывать сервер. По умолчанию это значение не содержит записей. Только принципал сервера и система могут вызывать сервер. Это значение обеспечивает простой уровень централизованного администрирования доступа по умолчанию к подключенным объектам на компьютере.
- DefaultLaunchPermission — Определяет список запуска по умолчанию для компьютера. Определяет список контроля доступа (ACL) участников, которые могут запускать классы, которые не указывают свой собственный ACL через значение реестра LaunchPermission. Права доступа по умолчанию следующие: Администраторы: разрешить запуск, СИСТЕМА: разрешить запуск, ИНТЕРАКТИВНО: разрешить запуск. Если значение LaunchPermission установлено для сервера, оно имеет приоритет над значением DefaultLaunchPermission . После получения локального или удаленного запроса на запуск сервера, у которого ключ AppID не имеет собственного значения LaunchPermission, проверяется ACL, описанный этим значением, при олицетворении клиента, и его успех разрешает или запрещает запуск кода класса.Это значение обеспечивает простой уровень централизованного администрирования запуска по умолчанию для доступа к другим незарегистрированным классам на компьютере. Например, администратор может использовать инструмент DCOMCNFG для настройки системы, чтобы разрешить доступ только для чтения для опытных пользователей. Поэтому OLE будет ограничивать запросы на запуск кода класса членами группы «Опытные пользователи». Впоследствии администратор может настроить разрешения на запуск для отдельных классов, чтобы предоставить возможность запуска кода класса другим группам или отдельным пользователям по мере необходимости.
- MachineAccessRestriction — Устанавливает политику ограничения на уровне компьютера для доступа к компоненту. Принципалы, которым здесь не предоставлены разрешения, не могут получить их, даже если разрешения предоставляются значением реестра DefaultAccessPermission или функцией CoInitializeSecurity. По умолчанию члены группы «Все» могут получать разрешения на локальный и удаленный доступ, а анонимные пользователи могут получать разрешения на локальный доступ.
- MachineLaunchRestriction — Устанавливает политику ограничения на уровне компьютера для запуска и активации компонента. Принципалы, которым здесь не предоставлены разрешения, не могут получить их, даже если разрешения предоставляются значением реестра DefaultAccessPermission или функцией CoInitializeSecurity. По умолчанию администраторы могут получать разрешения на локальный и удаленный запуск и активацию, а члены группы «Все» могут получать разрешения на локальную активацию и запуск.
Подробнее о данной ветке можно почитать по адресу https://docs.microsoft.com/en-us/windows/win32/com/hkey-local-machine-software-microsoft-ole
теперь находим все эти ключи, щелкаем по ним правым кликом мыши и удаляем со спокойной душей, далее я вам советую перезагрузить вашу систему. В подавляющем количестве случаев ошибка с кодом 10016 у вас больше не появится.
Исправление ошибки 10016 через PowerShell
Если вам не удалось изменить запуск службы для системы, то можно все поправить и избавиться от сообщений «APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
пользователю NT AUTHORITYСИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно)» с помощью скрипта PowerShell. Открываем ссылку с Microsoft
https://gallery.technet.microsoft.com/Grant-Revoke-Get-DCOM-22da5b96
Или во тут
Скачиваем тут сценарий DCOMPermissions.psm1
Кладем данный модуль в нужную вам папку. Далее вы открываете консоль PowerShell и переходите в месторасположение данного модуля, после чего его нужно импортировать:
Import-Module .DCOMPermissions.psm1
Grant-DCOMPermission -ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» -Account «SYSTEM» -Type Launch -Permissions LocalLaunch,LocalActivation -OverrideConfigurationPermissions
Если ошибок не вышло, то значит все успешно применено, перезагрузка не потребуется.
Далее вы можете посмотреть примененные разрешения:
Get—DCOMPermission —ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» —Type Launch
Вы увидите права у системы, у нее будет SID S-1-5-10.
На этом у меня все, мы успешно устранили ошибку DCOM 10016. Я должен подчеркнуть, что ошибка DCOM 10016 вряд ли повлияет на производительность вашей системы. В очень старые времена, когда Microsoft впервые представила «Distributed» в компонентной объектной модели, были уязвимости. Однако эти уязвимости были исправлены, и DCOM теперь безопасен. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Обработка ошибок
Даже если Вы создадите идеального «эксперта», ошибок не избежать, уж очень много факторов которых Вы не можете контролировать (связь, провайдер, ДЦ, терминал и тд.). Ошибки при выполнении торговых операций (открытие, удаление или модификация ордеров) можно разделить на две группы.
Первая – это когда «советник» не верно оформляет «заказ» на торговую операцию. Такой ордер терминал не исполняет а возвращает нам код ошибки. Код ошибки это число, например ошибка номер 130 – неправильно выставлены стопы.
Вторая – это когда с нашей стороны ордер оформлен верно и терминал послал его на исполнение, возвращается ошибка обрив связи, брокер занят и тд.
Итак научим наш «советник» распознавать эти ошибки и реагировать на них.
При установке ордеров мы используем торговую функцию OrderSend, при успешном исходе она возвращает номер открытого ордера, а при неудачи (ошибке) -1.
При удалении (OrderDelete), если ордер удален получим TRUE, если нет FALSE (ошибка).
Что бы узнать код ошибки вызывается функция GetLastError(), которая возвращает номер последней ошибки.
После каждой торговой операции (открытие, модификация и удаление), проверяем на наличие ошибок, в нашем «советнике» таких блоков где нужно вставить код четыре, каждый раз после функции OrderSend и OrderDelete.
Если ошибка есть – вызываем функцию GetLastError. Получим номер ошибки, но этот номер нам нужен как зайцу стопсигнал, все эти номера все одно не упомнишь. Вызываем функцию inf и передаем ей номер ошибки.
inf(15, GetLastError()); // если дошли сюда значит есть ошибка... узнаем какая именно
В этой функции есть блок который распознает ошибку и уже на «человеческом» языке сообщит нам в чем проблема.
case 15: switch(Number) // Переход на номер ошибки { case 2: Graf_Text = "Общая ошибка."; break; case 4: Graf_Text = "Торговый сервер занят."; break; case 129: Graf_Text = "Неправильная цена. "; break; case 135: Graf_Text = "Цена изменилась."; break; case 136: Graf_Text = "Нет цен. Ждём новый тик.."; break; case 137: Graf_Text = "Брокер занят."; break; case 146: Graf_Text = "Подсистема торговли занята."; break; case 5 : Graf_Text = "Старая версия терминала."; break; case 64: Graf_Text = "Счет заблокирован."; break; case 133: Graf_Text = "Торговля запрещена"; break; case 134: Alert("Недостаточно денег для совершения операции."); return(0); // Выход из функции default: Graf_Text = StringConcatenate("Возникла ошибка ",Number); } break;
Здесь нет ничего сложного и Вы сами можете сделать так, чтобы «советник» обрабатывал те ошибки, которые Вы посчитаете наиболее важными.
То что мы знаем об ошибке – хорошо, еще лучше чтобы «эксперт» сам реагировал на конкретную ситуацию. Например, если есть ошибка 137 (Брокер занят), а «советник» будет продолжать посылать по 100 запросов в секунду, счет могут заблокировать. В этом и подобных случаях чтобы наш «эксперт» не был назойливым при подобных ошибках будем делать паузу (пережидать несколько секунд).
if(IsTesting() == false) Sleep(5000); // если это не тестирование - "засыпаем" на 5 секунд.
Sleep() – функция останавливает «эксперта» на заданное время.
IsTesting() – функция возвращает TRUE в режиме тестирования, иначе возвращает FALSE.
Если это тестирование то паузы не нужны.
Вносим изменения в блок обработки ошибок.
case 15: switch(Number) // Переход на номер ошибки { case 2: Graf_Text = "Общая ошибка."; break; case 4: Graf_Text = "Торговый сервер занят."; if(IsTesting() == false) Sleep(5000); // если это не тестирование - "засыпаем" на 5 секунд. break; case 129: Graf_Text = "Неправильная цена."; break; case 130: Graf_Text = "Неправильная дистанция."; break; case 135: Graf_Text = "Цена изменилась."; break; case 136: Graf_Text = "Нет цен. Ждём новый тик.."; if(IsTesting() == false) Sleep(1); // если это не тестирование - "засыпаем" на 1 миллисекунду. break; case 137: Graf_Text = "Брокер занят."; if(IsTesting() == false)Sleep(5000); // если это не тестирование - "засыпаем" на 5 секунд. break; case 146: Graf_Text = "Подсистема торговли занята."; if(IsTesting() == false) Sleep(500); // если это не тестирование - "засыпаем" на пол секунды. break; case 5 : Graf_Text = "Старая версия терминала."; break; case 64: Graf_Text = "Счет заблокирован."; break; case 133: Graf_Text = "Торговля запрещена"; break; case 134: Alert("Недостаточно денег для совершения операции."); return(0); // Выход из функции default: Graf_Text = StringConcatenate("Возникла ошибка ",Number); } break;
Теперь «советник» будет не только сообщать об ошибках но и реагировать на них.
Исходник: TradeOnNews-0.3
Ошибка DistributedCOM с кодом события 10016 в Windows 11/10 — одна из самых известных проблем с которой пользователи сталкиваются в системном журнале. Эта ошибка запускается, когда определенные процессы не содержат прав доступа к компонентам DCOM, которые упоминаются в журналах событий. Это ограничивает безупречную работу компьютера, что в конечном итоге раздражает пользователей. Система сразу же забивает «Просмотрщик событий» тысячами сообщений с показам событий.
В ходе расследования выясняется, что при попытке запустить сервер DCOM с помощью приложения у вас нет никаких прав на это, и вы получите приведенную ниже ошибку в средстве просмотра событий: «Параметры разрешений для конкретного приложения не дают разрешения Локальной Активации для приложения COM-сервера«.
Перед тем, как приступить к исправлению, создайте точку восстановления системы.
Исправление кода события 10016 Ошибки DistributedCOM
Это самый быстрый и простой способ, чтобы исправить ошибку DistributedCOM с кодом события 10016, но менее надежный.
Нажмите Win+R и введите regedit, чтобы запустить редактор реестра. В реестре перейдите по пути:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOle
- Удалите следующие значения (некоторых может не быть): DefaultAccessPermission, DefaultLaunchPermission, MachineAccessRestriction, MachineLaunchRestriction.
Перезагрузите ПК и проверьте, появляется ли ошибка. Если да, то следуем ниже большому способу из 3 пунктов, где мы зададим привилегии для определенного DCOM.
Проверка процесса
1. Прежде всего должны отсортировать процесс или службу, связанную с кодом ошибки 10016. Далее вы найдете описание ошибки чуть ниже во вкладке «общие» или «подробности». Из описания скопируйте CLSID. Он может выглядеть как {D63B10C5… .
2. Отроем теперь редактор реестра. Нажмите сочетание кнопок Win+R и введите regedit.
3. В редакторе реестра выделите «Компьютер» одним нажатием мышки и нажмите «Правка» > «Найти«.
- Введите в поле поиска свой CLSID ключ, который типа {D63B10C5… . Поставьте галочку искать только «имена разделов».
- Вам выдаст ключ в правой стороне, выделите его мышкой один раз.
- В правом поле у вас будет ключ «По умолчанию» со значением RuntimeBroker. Запомните это значение оно нам пригодится в дальнейшим.
Следующая задача — запустить сценарий, чтобы внести некоторые изменения в раздел разрешений, найденных в службах компонентов для этой службы.
Открытие сервисов компонентов
Наберите в поиске windows «Службы компонентов«, нажмите правой кнопкой мыши и выберите запустить от имени администратора.
Перейдите по следующему пути Службы компонентов > Компьютеры > Мой компьютер > Настройка DCOM > и найдите в списке RuntimeBroker.
В некоторых случаях может быть два файла с этим именем. Вам нужно выяснить, какой файл несет ответственность за ошибку, что ниже мы и сделаем.
- Нажмите по очереди на двух файлов с именем RuntimeBroker правой кнопкой мыши выберите «Свойства«.
- Во вкладке «Общие» у вас будет «Код приложения» запомните его на двух файлах RuntimeBroker.
- Сравните код с ошибкой в «Журнале событий». APPID в журнале с ошибкой, должен соответствовать коду приложения в файле RuntimeBroker.
Исправление разрешений
Наконец, когда вы удостоверились, что это именно тот файл выдает ошибку, то проделайте следующие шаги:
- Нажмите в свойствах RuntimeBroker вкладку «Безопасность«.
- Кнопка «настроить» должна быть активной.
- Проделайте ниже шаги чтобы активировать настройки. (Не Запуск сценария PowerShell).
Запуск сценария PowerShell активирует эту кнопку настройки с помощью команды, но я рекомендую воспользоваться этим способом, если у вас не получилось все по порядку. Пропустите этот шаг «Запуск сценария PowerShell», если что потом вернетесь к нему.
Запуск сценария PowerShell
Чтобы обойти эту ошибку, вам нужно отредактировать некоторые разрешения в разделе «Служба компонентов» ключа RuntimeBroker. Прежде чем перейти к модификации, вам нужно запустить скрипт, который поможет вам изменить разрешения. Дальше поймете зачем мы это делали.
1. Нажмите сочетание кнопок Win+X и выберите Windows PowerShell (администратор).
2. Загрузите файл с кодом ниже. Разархивируйте скаченный архив, в нем содержится текстовый файл с кодом.
3. Вставьте скаченный скрипт с файла в командную строку PowerShell.
- 1-2. Скопируйте «Код приложения» в службах и компонентах, компонента RuntimeBroker.
- 3. Откройте редактор реестра, нажмите «правка» > «найти» и вставьте код приложения, который до этого скопировали. Нажмите правой кнопкой мыши на найденным ключе в реестре и выберите «Разрешения«.
- 4. далее в окне нажмите «Дополнительно«.
- В окне сверху «Владелец» нажмите «Изменить«.
- В следующим окне нажмите внизу «Дополнительно«.
- Нажмите справа «Поиск» и ниже со списка выберите «Администраторы«.
- Теперь переходим обратно в компоненты к свойству файла RuntimeBroker и мы видим, что теперь кнопка «настроить» стала интерактивной.
- Выскочит предупреждающее окно нажмите Удалить, если вам не мог код сценария powerShell.
- Нажмите Отмена, если вам помог код сценария powerShell.
- Нажмите Изменить напротив кнопки «настроить» в графе «разрешения на запуск и активацию».
Добавим группы система и local service.
- В окне, где имеются учетные записи нажмите «Добавить«.
- Ниже кнопка «Дополнительно«.
- Нажмите «Поиск» с боку.
- Найдите локальную службу LOCAL SERVICE и нажмите OK.
Аналогичным способом, что описан выше добавьте «Система«.
Теперь у вас появились две группы система и local service, нажмите на каждую из них и поставьте галочки в пунктах «Локальный запуск» и «Локальная активация».
Перезагрузите компьютер, ноутбук и код события 10016 Ошибка DistributedCOM должен пропасть.
Смотрите еще:
- DISM ошибка 87 в командной строке Windows
- Ошибка 0x8000ffff при восстановлении системы Windows 10
- Как исправить Ошибку 0xc1900101 0x20004 при установке Windows 10
- Как исправить ошибки обновлений Windows 10
- Как узнать IP-адрес компьютера с помощью PowerShell Windows
[ Telegram | Поддержать ]
Что значит 2010.02.01 17:00 MyExpert GBPUSD,M15: OrderModify error 130
почему обычно эта ошибка возникает?
Очень много подобных вопросов мне приходит. Поэтому публикую таблицу кодов ошибок. Например посмотрев вышеописанную ошибку error 130 становится понятно, что функция OrderModify пытается изменить стоп-лосс или тейк-профит слишком близко к текущей цене.
Коды ошибок
GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.
Коды ошибок, возвращаемые торговым сервером или клиентским терминалом:
Значение | Описание |
---|---|
0 | Нет ошибки |
1 | Нет ошибки, но результат неизвестен |
2 | Общая ошибка |
3 | Неправильные параметры |
4 | Торговый сервер занят |
5 | Старая версия клиентского терминала |
6 | Нет связи с торговым сервером |
7 | Недостаточно прав |
8 | Слишком частые запросы |
9 | Недопустимая операция нарушающая функционирование сервера |
64 | Счет заблокирован |
65 | Неправильный номер счета |
128 | Истек срок ожидания совершения сделки |
129 | Неправильная цена |
130 | Неправильные стопы |
131 | Неправильный объем |
132 | Рынок закрыт |
133 | Торговля запрещена |
134 | Недостаточно денег для совершения операции |
135 | Цена изменилась |
136 | Нет цен |
137 | Брокер занят |
138 | Новые цены |
139 | Ордер заблокирован и уже обрабатывается |
140 | Разрешена только покупка |
141 | Слишком много запросов |
145 | Модификация запрещена, так как ордер слишком близок к рынку |
146 | Подсистема торговли занята |
147 | Использование даты истечения ордера запрещено брокером |
148 | Количество открытых и отложенных ордеров достигло предела, установленного брокером. |
Коды ошибок выполнения MQL4 программы:
Значение | Описание |
---|---|
4000 | Нет ошибки |
4001 | Неправильный указатель функции |
4002 | Индекс массива — вне диапазона |
4003 | Нет памяти для стека функций |
4004 | Переполнение стека после рекурсивного вызова |
4005 | На стеке нет памяти для передачи параметров |
4006 | Нет памяти для строкового параметра |
4007 | Нет памяти для временной строки |
4008 | Неинициализированная строка |
4009 | Неинициализированная строка в массиве |
4010 | Нет памяти для строкового массива |
4011 | Слишком длинная строка |
4012 | Остаток от деления на ноль |
4013 | Деление на ноль |
4014 | Неизвестная команда |
4015 | Неправильный переход |
4016 | Неинициализированный массив |
4017 | Вызовы DLL не разрешены |
4018 | Невозможно загрузить библиотеку |
4019 | Невозможно вызвать функцию |
4020 | Вызовы внешних библиотечных функций не разрешены |
4021 | Недостаточно памяти для строки, возвращаемой из функции |
4022 | Система занята |
4050 | Неправильное количество параметров функции |
4051 | Недопустимое значение параметра функции |
4052 | Внутренняя ошибка строковой функции |
4053 | Ошибка массива |
4054 | Неправильное использование массива-таймсерии |
4055 | Ошибка пользовательского индикатора |
4056 | Массивы несовместимы |
4057 | Ошибка обработки глобальныех переменных |
4058 | Глобальная переменная не обнаружена |
4059 | Функция не разрешена в тестовом режиме |
4060 | Функция не подтверждена |
4061 | Ошибка отправки почты |
4062 | Ожидается параметр типа string |
4063 | Ожидается параметр типа integer |
4064 | Ожидается параметр типа double |
4065 | В качестве параметра ожидается массив |
4066 | Запрошенные исторические данные в состоянии обновления |
4067 | Ошибка при выполнении торговой операции |
4099 | Конец файла |
4100 | Ошибка при работе с файлом |
4101 | Неправильное имя файла |
4102 | Слишком много открытых файлов |
4103 | Невозможно открыть файл |
4104 | Несовместимый режим доступа к файлу |
4105 | Ни один ордер не выбран |
4106 | Неизвестный символ |
4107 | Неправильный параметр цены для торговой функции |
4108 | Неверный номер тикета |
4109 | Торговля не разрешена |
4110 | Длинные позиции не разрешены |
4111 | Короткие позиции не разрешены |
4200 | Объект уже существует |
4201 | Запрошено неизвестное свойство объекта |
4202 | Объект не существует |
4203 | Неизвестный тип объекта |
4204 | Нет имени объекта |
4205 | Ошибка координат объекта |
4206 | Не найдено указанное подокно |
4207 | Ошибка при работе с объектом |
Если Вы хотите изучать язык MQL или вам понравилась данная публикация — Вы можете подписаться на получение новых материалов сайта mql4you.ru по
RSS
или по e-mail:
Другие публикации рубрики «FAQ по MQL и Metatrader»:
- Вопрос №9 «Как заставить работать советник при выключенном компьютере?»
- Вопрос №8 «Как рассчитать размер лота в зависимости от размера стоплосса?»
- Можно ли настроить нестандартный тайм-фрейм в MT4? — Вопрос №7
- Вопрос №6 «Как уменьшить размер папки с терминалом MT4?»
- Вопрос №4 — «Выключение компьютера из MQL»
- Вопрос №3
- Вопрос №2
- Вопрос №1
Далеко не все ошибки в Windows проявляют себя очевидным образом – аварийным завершением работы приложений, отказом базовых функций управления или появлением окон с тревожными уведомлениями. О том, что в системе случился тот или иной сбой, пользователь может даже не подозревать, если только он не имеет привычки регулярно просматривать Журнал событий. Такие скрытые ошибки, как правило, не являются критичными и в большинстве случаев указывают на некорректную работу компонентов. Примером может служить ошибка 10016 DistributedCOM в Windows 10, регулярно появляющаяся в Журнале событий обычно сразу после загрузки операционной системы.
Появление ошибки 10016 говорит о том, что системная служба DCOM не смогла запустить какое-то приложение по причине отсутствия у системы (пользователя SYSTEM) соответствующих прав. Какое это приложение, можно определить по его APPID-коду в описании. Однако это не столь важно, ведь для исправления неполадки достаточно знать именно APPID и CLSID COM-сервера, который также указан в описании неполадки. Сама же неисправность устраняется предоставлением системе полных прав на запуск приложения.
Перед тем как приступать к активным действиям, необходимо получить список ошибок в оснастке просмотра событий. Открыв ее командой eventvwr, разверните в левой колонке Журналы Windows – Система, справа нажмите «Фильтр текущего журнала» и отсортируйте записи по коду события 10016 и/или источнику.
Теперь скопируйте APPID-код приложения из описания ошибки и откройте командой regedit штатный редактор реестра.
Выделите корневой раздел «Компьютер» и выполните поиск по скопированному идентификатору, отметив среди искомых объектов «Имена разделов».
Далее кликните ПКМ по найденному разделу, выберите в меню «Разрешения» и нажмите в открывшемся окошке кнопку «Дополнительно».
В окне дополнительных параметров напротив имени владельца нажмите «Изменить», потом «Дополнительно», затем «Поиск» и выберите в качестве нового хозяина «Администраторы». Последовательно сохраните настройки.
Точно такие же действия выполните в отношении ключа CLSID – найдите в реестре соответствующий ему раздел, поменяйте его владельца на «Администраторы» и предоставьте группе полный доступ. На этом первый этап исправления ошибки 10016 DistributedCOM завершен.
Этап 2
Изменив разрешения в реестре, откройте командой comexp.msc или dcomcnfg встроенное приложение «Службы компонентов», разверните в левой колонке ветку настроек так, как показано на скриншоте, и отыщите справа элемент «RuntimeBroker».
Вполне вероятно у вас будет два таких элемента. Чтобы найти нужный, откройте его свойства и убедитесь, что указанный в них код приложения совпадает с APPID из описания ошибки 10016 DistributedCOM в Журнале событий. Неполадка с кодом события 10016 в Windows 10 может быть связана не только с RuntimeBroker, но и с другими приложениями, возможно, вам придется проверить их все.
Удостоверившись в правильности данных, переключитесь на вкладку «Безопасность» и нажмите кнопку «Изменить» в разделе «Разрешение на запуск и активацию».
Если система попросит удалить нераспознаваемые записи разрешений, удалите таковые. Теперь нажмите в открывшемся окошке разрешений кнопку «Добавить», затем «Дополнительно», найдите через поиск пользователя LOCAL SERVICE и предоставьте ему разрешения на локальный запуск и на локальную активацию.
Аналогичным образом добавьте с идентичными правами пользователя СИСТЕМА. Делается это по той же схеме, которая описана выше. Добавив указанных пользователей, последовательно сохраните все настройки и перезагрузите компьютер.
По идее, описанные выше действия должны помочь исправить ошибку 10016 в Windows 10, но, как показывает практика, в ряде случаев администратору не удается получить доступ к настройкам разрешений. Причины тому могут быть разными, а попытки их устранения нередко связаны с определенными рисками. Поэтому, если ошибка DistributedCOM не вызывает явных проблем, лучше проигнорировать ее, чтобы не навредить операционной системе и настройкам безопасности еще больше.
- 0поделились
- 0Facebook
- 0Twitter
- 0VKontakte
- 0Odnoklassniki
Далеко не все ошибки в Windows проявляют себя очевидным образом – аварийным завершением работы приложений, отказом базовых функций управления или появлением окон с тревожными уведомлениями. О том, что в системе случился тот или иной сбой, пользователь может даже не подозревать, если только он не имеет привычки регулярно просматривать Журнал событий. Такие скрытые ошибки, как правило, не являются критичными и в большинстве случаев указывают на некорректную работу компонентов. Примером может служить ошибка 10016 DistributedCOM в Windows 10, регулярно появляющаяся в Журнале событий обычно сразу после загрузки операционной системы.
Появление ошибки 10016 говорит о том, что системная служба DCOM не смогла запустить какое-то приложение по причине отсутствия у системы (пользователя SYSTEM) соответствующих прав. Какое это приложение, можно определить по его APPID-коду в описании. Однако это не столь важно, ведь для исправления неполадки достаточно знать именно APPID и CLSID COM-сервера, который также указан в описании неполадки. Сама же неисправность устраняется предоставлением системе полных прав на запуск приложения.
События с идентификатором 10016 записываются в журнал событий, когда компоненты Microsoft обращаются за доступом к компонентам DCOM без требуемых в этом случае разрешений.
Компанией Microsoft создан сценарий работы, при котором системный код обращается за доступом к компонентам DCOM с предпочтительным набором параметров, и если доступ не предоставлен, код обращается снова с другим набором.
Служба поддержки Microsoft сообщает, что указанные ошибки заложены в работу ОС, происходят на всех ОС Windows 10 и могут быть проигнорированы пользователями без последствий для работы системы.
В некоторых случаях сообщения об ошибках могут начать появляться после установки определенных исправлений Windows.
Несмотря на то, что это не критическая системная ошибка, заполнение журнала ошибками 100016 может затруднить поиск и диагностику других ошибок на ПК.
В указанных случаях ошибки можно исправить либо предоставлением разрешения для компонентов DCOM, либо полным отключением регистрации ошибок Distributed COM.
Как справиться с ошибкой с кодом 10016 — отсутствии разрешений на запуск для приложений COM-сервера
Далеко не все случающиеся в Windows ошибки проявляют себя явно, так что пользователь может даже не подозревать о их наличии пока не откроет раздел «Система» в журнале событий Windows. Сегодня мы постараемся разобрать причины одной из таких ошибок. Встречается она довольно часто, причём во всех версиях Windows начиная с XP, имеет код 10016 и примерно следующее описание:
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E} и APPID {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E} пользователю DESKTOP-AEM9850/компик с ИД безопасности…
Здесь приводится лишь часть описания ошибки, на деле оно может быть более объёмным и отличаться в деталях. Из описания следует, что пользователь DESKTOP-AEM9850/компик (пользователем может быть и система) пытается запустить некий COM-компонент, но не может этого сделать по причине отсутствия соответствующих прав. Что за компонент и какое именно приложение вызывает ошибку Windows прямо не указывает, всё что нам известно, это CLSID компонент и идентификатор приложения.
Задача заключается в том, чтобы определить, какому приложению принадлежит идентификатор, а затем предоставить пользователю или системе соответствующие права для его запуска. Проще всего это сделать через реестр. Откройте командой regedit редактор реестра и разверните ветку HKEY_CLASSES_ROOT/AppID. Воспользовавшись встроенным поиском, найдите в подразделе APPID приложения (в нашем примере это {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E}).
После того как ключ будет найден, потребуется предоставить к нему полные права доступа пользователю, имя (первая его часть) которого указывается в описании. Для этого кликаем правой кнопкой мыши по ключу, выбираем «Разрешения»
И жмём в открывшемся окошке кнопку «Дополнительно».
Как видим, в данном примере владельцем ключа является TrustedInstaller. Заменим его администратором (пользователем DESKTOP-AEM9850).
Кликните по ссылке «Изменить».
Введите имя локального пользователя, нажмите «OK».
Установите галочку «Заменить владельца подконтейнеров и объектов» и еще раз нажмите «OK».
Теперь во второй раз откройте окошко разрешений для группы, выделите в нём администратора, коим был заменён TrustedInstaller, отметьте галочкой чекбокс «Полный доступ» и сохраните новые настройки.
Отлично, возвращаемся в редактор реестра и запоминаем значение параметра по умолчанию для найденного ранее ключа.
У нас это InstallAgent. Далее командой comexp.msc или dcomcnfg в окошке «Выполнить» открываем оснастку «Службы компонентов» и разворачиваем в меню «Компьютеры» -> «Мой компьютер» -> «Настройка DCOM» и находим компонент с именем параметра по умолчанию (InstallAgent). Через контекстное меню вызываем его свойства.
Переключаемся на вкладку «Безопасность», в блоке «Разрешения на запуск и активацию» жмём «Изменить».
Выбираем пользователя, устанавливаем галочки в чекбоксах «Локальный запуск» и «Локальная активация» после чего сохраняем настройки и перезагружаем компьютер.
В принципе, эти действия должны устранить ошибку, если только её появление было связано с отсутствием необходимых прав доступа, однако стопроцентной гарантии, что всё будет именно так дать нельзя.
Сделать копию реестра
Прежде чем выполнить шаги по устранению ошибок DCOM 10016, необходимо сделать копию системного реестра. Это позволит восстановить работу ОС в случае ее сбоев.
Также перед выполнением нижеследующих действий необходимо зайти в Windows с правами администратора.
Справка! Первый созданный в Windows 10 пользователь (напр., при инсталляции системы) имеет права администратора.
Шаг 1. Нажать клавиши «Win+R».
Шаг 2. Напечатать в меню «regedit» и щелкнуть «ОК».
Шаг 3. Откроется «Registry Editor» («Редактор реестра»). Нажать «File» («Файл») и щелкнуть «Export» («Экспорт»).
Шаг 4. В следующем окне о («Все»).
Шаг 5. Выбрать папку для размещения копии реестра и ввести ее имя.
Шаг 6. Щелкнуть «Save» («Сохранить»).
Исправление ошибки 10016 через PowerShell
Если вам не удалось изменить запуск службы для системы, то можно все поправить и избавиться от сообщений «APPID {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} пользователю NT AUTHORITYСИСТЕМА с ИД безопасности (S-1-5-18) и адресом LocalHost (с использованием LRPC), выполняемого в контейнере приложения Недоступно с ИД безопасности (Недоступно)» с помощью скрипта PowerShell. Открываем ссылку с Microsoft
https://gallery.technet.microsoft.com/Grant-Revoke-Get-DCOM-22da5b96
Скачиваем тут сценарий DCOMPermissions.psm1
Кладем данный модуль в нужную вам папку. Далее вы открываете консоль PowerShell и переходите в месторасположение данного модуля, после чего его нужно импортировать:
Import-Module .DCOMPermissions.psm1 Grant-DCOMPermission -ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» -Account «SYSTEM» -Type Launch -Permissions LocalLaunch,LocalActivation -OverrideConfigurationPermissions
Если ошибок не вышло, то значит все успешно применено, перезагрузка не потребуется.
Далее вы можете посмотреть примененные разрешения:
Get-DCOMPermission -ApplicationID «{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}» -Type Launch
Вы увидите права у системы, у нее будет SID S-1-5-10.
На этом у меня все, мы успешно устранили ошибку DCOM 10016. Я должен подчеркнуть, что ошибка DCOM 10016 вряд ли повлияет на производительность вашей системы. В очень старые времена, когда Microsoft впервые представила «Distributed» в компонентной объектной модели, были уязвимости. Однако эти уязвимости были исправлены, и DCOM теперь безопасен. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Признаки возникновения ошибки
Понять, что на компьютере произошла именно ошибка 6008 можно по характерным признакам. С основными из них вы можете ознакомиться ниже:
- Во время работы с какой-либо программой появляется окно «Ошибка 6008», а само приложение сразу же закрывается.
- Компьютер самостоятельно завершает работу при открытии программы или после появления окна с ошибкой.
- Операционная система работает очень медленно, а нажатия по кнопкам мыши или клавиатуры отображаются с задержкой.
- ПК периодически перестает реагировать на все действия, выполняемые пользователем – попросту «зависает».
Если вы столкнулись с подобными признаками, то это весомый повод попробовать избавиться от ошибки.
Устранение неполадок в WMI
Любой бывалый Windows-админ не раз сталкивался с проблемами в работе службы WMI и ее компонентах.
Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений
- Ошибки GPO, завязанные на WMI ( некорректная работа wmi фильтров политик, и пр.)
- Ошибки в работе / невозможность установки агентов SCCM/SCOM
- Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI
В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.
Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:
get-wmiobject Win32_OperatingSystem
Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.
Утилита WMIDiag
Для «тонкой» диагностики службы WMI существует официальная утилита Microsoft — WMIDiag (Microsoft WMI Diagnosis).
Утилита представляет собой vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:USERS%USERNAME%APPDATALOCALTEMP).
Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.1 и включает в себя следующие типы фалов :
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI
После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.
В общем случае, WMIDiag может дать информацию по исправлению частных ошибок в WMI , но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей гораздо проще «бить по площадям» и решать проблему работы WMI более радикально.
Перерегистрация библиотек WMI и перекомпиляция mof файлов
Следующий скрипт представляет собой «мягкий» вариант восстановления работоспособности службы WMI на отдельно взятом компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem for /f %%s in (‘dir /b *.dll’) do regsvr32 /s %%s wmiprvse /regserver winmgmt /regserver sc config winmgmt start= auto net start winmgmt for /f %%s in (‘dir /b *.mof’) do mofcomp %%s for /f %%s in (‘dir /b *.mfl’) do mofcomp %%s
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле и запустить его с правами администратора. После окончания работы скрипта, систему нужно перезагрузить и вновь проверить работу WMI.
Пересоздание репозитория (хранилища) WMI
В том случае, если предыдущий способ не помог, придется перейти к более «жесткому» способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилища.
WMI репозиторий (хранилище) находится в каталоге %windir%System32WbemRepository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов.
В некоторых случаях репозитория WMI может содержать статическую информацию классов.
При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
В том случае, если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание это последняя вещь, к которой нужно прибегнуть только в том случае, если никакие другие операции реанимировать WMI не помогают.
В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:
winmgmt /verifyrepository
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:
Winmgmt /salvagerepository
И перезапустить службу wmi:
net stop Winmgmtnet start Winmgmt
Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:
Winmgmt /resetrepository
В том случае, если команды Winmgmt /salvagerepository и Winmgmt /resetrepository желаемого эффекта не дали, стоит попробовать выполнить «жесткое» пересоздание базы WMI вручную таким сценарием:
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem winmgmt /kill winmgmt /unregserver winmgmt /regserver winmgmt /resyncperf if exist Repos_bakup rd Repos_bakup /s /q rename Repository Repos_bakup regsvr32 /s %systemroot%system32scecli.dll regsvr32 /s %systemroot%system32userenv.dll for /f %%s in (‘dir /b *.dll’) do regsvr32 /s %%s for /f %%s in (‘dir /b *.mof’) do mofcomp %%s for /f %%s in (‘dir /b *.mfl’) do mofcomp %%s sc config winmgmt start= auto net start winmgmt wmiprvse /regserver
Что такое DistributedCOM
В первую очередь необходимо разобраться, что такое DistributedCOM, и почему этот объект вызывает ошибку. DistributedCOM — это Distributed Component Object Model, неотъемлемая часть взаимодействия сетей на персональных компьютерах и ноутбуках под управлением операционной системы виндовс. Это своего рода технология от «Майкрософт», срабатывающая всякий раз, когда компьютер или какое-либо приложение выполняет подключение к Глобальной сети.
Ошибка 10016 не сулит ничего страшного, но в устранении нуждается
К сведению! Стандартная Component Object Model способна получать доступ к файлам только на машине, с которой она была запущена, а Distributed Component Object Model может работать с данными на удаленных серверах.
Известно, что многие веб-сайты и ресурсы используют скрипты для доступа к удаленным серверам. Во время того, как операционная система делает то же самое, DCOM обращается к определенному объекту удаленного сервера, но часто не имеет соответствующих разрешений. Из-за этого и происходит ошибка. Она никак не влияет на работу системы, если только нет засорения журнала просмотра событий виндовс.
Далеко не все случающиеся в Windows ошибки проявляют себя явно, так что пользователь может даже не подозревать о их наличии пока не откроет раздел «Система» в журнале событий Windows. Сегодня мы постараемся разобрать причины одной из таких ошибок. Встречается она довольно часто, причём во всех версиях Windows начиная с XP, имеет код 10016 и примерно следующее описание:
Параметры разрешений для конкретного приложения не дают разрешения Локально Активация для приложения COM-сервера с CLSID {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E} и APPID {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E} пользователю DESKTOP-AEM9850/компик с ИД безопасности…
Здесь приводится лишь часть описания ошибки, на деле оно может быть более объёмным и отличаться в деталях. Из описания следует, что пользователь DESKTOP-AEM9850/компик (пользователем может быть и система) пытается запустить некий COM-компонент, но не может этого сделать по причине отсутствия соответствующих прав. Что за компонент и какое именно приложение вызывает ошибку Windows прямо не указывает, всё что нам известно, это CLSID компонент и идентификатор приложения.
Задача заключается в том, чтобы определить, какому приложению принадлежит идентификатор, а затем предоставить пользователю или системе соответствующие права для его запуска. Проще всего это сделать через реестр. Откройте командой regedit редактор реестра и разверните ветку HKEY_CLASSES_ROOT/AppID. Воспользовавшись встроенным поиском, найдите в подразделе APPID приложения (в нашем примере это {260EB9DE-5CBE-4BFF-A99A-3710AF55BF1E}).
После того как ключ будет найден, потребуется предоставить к нему полные права доступа пользователю, имя (первая его часть) которого указывается в описании. Для этого кликаем правой кнопкой мыши по ключу, выбираем «Разрешения»
И жмём в открывшемся окошке кнопку «Дополнительно».
Как видим, в данном примере владельцем ключа является TrustedInstaller. Заменим его администратором (пользователем DESKTOP-AEM9850).
Кликните по ссылке «Изменить».
Введите имя локального пользователя, нажмите «OK».
Установите галочку «Заменить владельца подконтейнеров и объектов» и еще раз нажмите «OK».
Теперь во второй раз откройте окошко разрешений для группы, выделите в нём администратора, коим был заменён TrustedInstaller, отметьте галочкой чекбокс «Полный доступ» и сохраните новые настройки.
Отлично, возвращаемся в редактор реестра и запоминаем значение параметра по умолчанию для найденного ранее ключа.
У нас это InstallAgent. Далее командой comexp.msc или dcomcnfg в окошке «Выполнить» открываем оснастку «Службы компонентов» и разворачиваем в меню «Компьютеры» -> «Мой компьютер» -> «Настройка DCOM» и находим компонент с именем параметра по умолчанию (InstallAgent). Через контекстное меню вызываем его свойства.
Переключаемся на вкладку «Безопасность», в блоке «Разрешения на запуск и активацию» жмём «Изменить».
Выбираем пользователя, устанавливаем галочки в чекбоксах «Локальный запуск» и «Локальная активация» после чего сохраняем настройки и перезагружаем компьютер.
В принципе, эти действия должны устранить ошибку, если только её появление было связано с отсутствием необходимых прав доступа, однако стопроцентной гарантии, что всё будет именно так дать нельзя.
Загрузка…