System Error Codes
This section is intended for developers who are debugging system errors. If you reached this page while searching for other errors, here are some links that might help:
- Windows Update errors — For help resolving issues with Windows Update.
- Windows activation errors — For help verifying your copy of Windows.
- Troubleshooting blue screen errors — For help discovering what caused a stop error.
- Microsoft Support — For support with a Microsoft product.
More ways to find an error code
We’ve listed the system error codes in this section, organized by number. If you need more help tracking down a specific error, here are some more recommendations:
- Use the Microsoft Error Lookup Tool.
- Install the Debugging Tools for Windows, load a memory dump file, and then run the !err command.
- Search the Microsoft Protocols site for the raw text or error code. For more information, see [MS-ERREF]: Windows Error Codes.
Third party error codes
Other error codes may be generated by third party services or apps (for example, Error Code: -118 may be displayed by the Steam game service) and in those situations you would contact the third party’s support line.
System Error Codes
System Error Codes are very broad: each one can occur in one of many hundreds of locations in the system. Consequently, the descriptions of these codes cannot be very specific. Use of these codes requires some amount of investigation and analysis. You need to note both the programmatic and the runtime context in which these errors occur.
Because these codes are defined in WinError.h for anyone to use, sometimes the codes are returned by non-system software. And sometimes the code is returned by a function deep in the stack and far removed from code that is handling the error.
The following topics provide lists of system error codes. These values are defined in the WinError.h header file.
Типовые ошибки при установке Windows через SCCM
В этой статье мы расскажем, как легко и эффективно траблшутить установку Windows, выполняемую через System Center Configuration Manager (SCCM) или с помощью MDT.
Итак, мы рассматриваем ситуацию, когда выполняется task sequence, запущенный с SCCM сервера или из MDT, интегрированной с WDS. Существенной разницы нет, ведь exit коды фактически у них одинаковые для стандартных типовых шагов. также соверщенно не важно, загружали ли вы клиента с PXE или через Boot media (загрузочную срезу на USB или DVD), главное, чтобы вы попали в среду Windows PE и могли там выбрать нужный task sequence.
Exit win32 codes — коды ошибок в task sequence
Итак, представим себе, что вы успешно запустили task sequence и через некотрое время получили окно с кодом ошибки. Вот типовые коды:
0×80070070 — «There is not enough space on the disk.» На диске нет достаточно места. Такое встречается, когда диск не обнаружен или не является disk 0 на SATA контроллере (нельзя установить ОС на disk 1 и т.д.) или когда в компьютер вставлены другие носители (флэшки, внешние диски). Также такое встречается, когда структура разделов на диске не соотвествует утанавливаемой ОС: например, диск разбит в MBR, а вы ставите в GPT. Это типовая ситуация, когда вы устанавливаете Windows 10 в UEFI (со структурой разделов GPT) после того, как на этом диске стояла Windows 7 в Legacy mode (структура разделов MBR). И самый последний возможный случай — когда на диске есть скрытые или зашифрованные разделы (например с помощью Bitlocker). Во всех случаях диск необходимо очистить от разделов с помощью утилиты diskpart.
Очистка выполняется следующими командами в окне cmd:
diskpart
select disk 0
clean
exit
0×80070490 — «Invalid disk number specified». «System partition is not defined». Failed to identify HDD, failed to identify existing partitions on the HDD, failed to find driver for PCI\VEN device. Типовая ошибка, когда Windows PE не может определить наличие диска на контроллере, разделов на нем, часто в случае неправильной настройки в BIOS или в следствие того, что ваш загрузочный образ Windows PE просто не содержит нужных драйверов для вашего контроллера диска. Напомню, что необходимо добавлять драйвера контроллеров в загрузочный образ через утилиту DISM, когда вы переходите с одной платформы на другую.
0×80070032 — «The active system partition on a MBR system must be NTFS». Существующая файловая система или разбиение диска не NTFS. Диск необходимо очистить от разделов с помощью утилиты diskpart.
0×80070570 — «An error occurred while starting task sequence». «The file or directory is corrupted and unreadable.» Эта ошибка может как означать повреждение самого диска или файловой системы, так и исходных файлов пакетов, которые вы ставите на диск. Также эта ошибка встречается, когда компьютер некорректно выключен и Windows хочет проверить диск на ошибки при следующей загрузке.
0×80070057 — «Format failed». Утилита для форматирования диска. встроенная в MDT, не может отформатировать диск. Чаще всего из-за того, что диск не определяется или не подключен как disk 0 в системе.
0×80070002 — «The system cannot find the file specified». Если установка происходит с SCCM, то это означает, что пакет не удалось успешно скачать с сервера, в остальных случаях — в пакете установки программы используется неверный путь или отсуствуют какие-то файлы.
0×80004005 — «An error occurred while retrieving policy for this computer». Эта ошибка может иметь за собой массу различных причин, потому что 4005 — это generic code, означающий, что операция не может быть выполнена. Но если она встречается в самом начале до выбора task sequence для исполнения и сопровожается текстом ошибки «An error occurred while retrieving policy for this computer», то это происходит, когда клиент не может получить список task sequence с SCCM сервера. Причина тому — неправильное время, установленное на клиете или сетевая ошибка. Также, это может быть следствием того, что сертификат в загрузочном образе (boot image) и сертификат на Management point сервере SCCM отличаются.
Поясню механизм, как это работает. Ваш загрузочный образ должен содержать всю неободимую информацию для подключения к серверам SCCM (прописывается в конфигурационном файле MDT). Затем, при загрузке Windows PE исполняется необходимая последовательность команд, в частности подключение к Management Point, откуда клиент должен забрать список доступных Task sequences. В этот момент ко всему прочему проверяется время на клиенте и на сервере, если они отличаются, сервер ответит отказом. Равно как и в случае неподходящего сертификата.
В остальных случаях 0×80004005 просто означает неудачное выполнение операции. Чтобы узнать детали, что именно было не выполенно, необходимо изучать логи SCCM.
Как собирать логи SCCM / MDT
MDT создает следующие лог-файлы:
- BDD.log. Это файл-агрегатор, который содержит результаты основных шагов task sequence.
- dism.log— лог, создаваемый командой DISM, когда та используется для конфигурирования установленной Windows (в первую очередь при unattended установке драйверов)
- LiteTouch.log.Этот файл создается, если вы используете LTI деплойменты. По умолчанию располагается в %WINDIR%\TEMP\DeploymentLogs.
- NetSetup.LOG— файл содержит сетевую информация о добавлении компьютера в домен.
- Scriptname.log. Такие файлы создаются каждым MDT скриптом согласно его имени.
- SMSTS.log.Это главный файл. создаваемый самим секвенсором (исполнителем Task sequence). Этот файл описывает все шаги Task sequence, по окончании каждого шага выводит exit win32 code, с которым он завершился. По умолчанию, этот файл имеет размер 2 Мбайт. Если общий размер лога превышает этот размер, то создается второй, третий и т.д. файлы, начинающиеся на smsts*. Файл может располагаться в %TEMP%, %WINDIR%\System32\ccm\logs, or C:\_SMSTaskSequence, or C:\SMSTSLog в зависимости от типа установки (MDT, SCCM, с SCCM килентом или без) и от этапа, на котром сейчас находится установка ОС.
- Wizard.log.Мастер установки MDT создает этот файл.
- WPEinit.log.Этот файл создается Windows PE при его инициализации и полезен при траблшутинге самого Windows PE.
- zticonfigure.log— содержит информацию о конфигурировании кастомных настроек Windows, которые вы указали в конфигурации MDT (чаще всего это региональная локализация). Создается при ZTI деплойментах с SCCM.
- ztigroups.log— содержит информацию о добавлении групп в локальные администраторы на компьютере, если таковые были указаны в настройках MDT. Создается при ZTI деплойментах с SCCM.
В конце выполнения task sequence все логи копируются в папку, указанную в свойстве SLShare файле настроек MDT Customsettings.ini file. Если вы указали сетевой путь, то сетевой ресурс должен быть доступен для этого.
Дополнительно, сама Windows создает два полезных файла в папке C:\Windows\Panther\UnattendGC — setupact.log и setuperr.log. С помощью них вы можете найти ошибки во время конфигурирования Windows и добавления компьютера в домен.
Расположение логов меняется в зависимости от того, какой тип установки вы используете (LTI, ZTI, с SCCM или без). Но в общем случае порядок их поиска таков:
- На стадии начала работы Windows PE до запуска task sequence логи находятся в X:\windows\temp\smstslog
- После запуска task sequence в Windows PE, во время форматирования диска и прочих сервисных операций Windows PE — в X:\MININT\SMSOSD\OSDLOGS
- После форматирования диска и во время применения образа на диск — на локальном диске C: или D: (в зависимости от того, как вы форматировали диск): C:\_SMSTaskSequence\Logs и C:\SMSTSLog
- После установки SCCM клиента, если такая есть в вашем task sequence логи будут сохраняться в C:\Windows\CCM\Logs, потому что с этого момента SCCM клиент управляет установкой программ.
- В папке %WINDIR%\TEMP\DeploymentLogs будут храниться логи, если вы использовали LTI установку через MDT без SCCM.
Чем читать логи
Программой Cmtrace. Она вохдит в состав пакет System Center 2012 R2 Configuration Manager Toolkit в виде самостоятельной утилиты. Я рекомендую встроить ее в ваш загрузочный образ. Чтобы прочитать логи в Windows PE, нажмите F8, появится окно cmd, где вы можете или вызвать cmtrace или explorer.
Task Scheduler Error and Success Constants
If an error occurs, the Task Scheduler APIs can return one of the following error codes as an HRESULT value.
The constants that begin with SCHED_S_ are success constants, and the constants that begin with SCHED_E_ are error constants.
Some Task Scheduler APIs can return system and network error codes (64 for example). You can check the definition of these types of error codes by using the net helpmsg command in the command prompt window. For example, the command net helpmsg 64 returns the message: The specified network name is no longer available.
For more information about events and error messages, see Events and Errors Message Center.
SCHED_S_TASK_READY
The task is ready to run at its next scheduled time.
SCHED_S_TASK_RUNNING
The task is currently running.
SCHED_S_TASK_DISABLED
The task will not run at the scheduled times because it has been disabled.
SCHED_S_TASK_HAS_NOT_RUN
The task has not yet run.
SCHED_S_TASK_NO_MORE_RUNS
There are no more runs scheduled for this task.
SCHED_S_TASK_NOT_SCHEDULED
One or more of the properties that are needed to run this task on a schedule have not been set.
SCHED_S_TASK_TERMINATED
The last run of the task was terminated by the user.
SCHED_S_TASK_NO_VALID_TRIGGERS
Either the task has no triggers or the existing triggers are disabled or not set.
SCHED_S_EVENT_TRIGGER
Event triggers do not have set run times.
SCHED_E_TRIGGER_NOT_FOUND
A task’s trigger is not found.
SCHED_E_TASK_NOT_READY
One or more of the properties required to run this task have not been set.
SCHED_E_TASK_NOT_RUNNING
There is no running instance of the task.
SCHED_E_SERVICE_NOT_INSTALLED
The Task Scheduler service is not installed on this computer.
SCHED_E_CANNOT_OPEN_TASK
The task object could not be opened.
SCHED_E_INVALID_TASK
The object is either an invalid task object or is not a task object.
SCHED_E_ACCOUNT_INFORMATION_NOT_SET
No account information could be found in the Task Scheduler security database for the task indicated.
SCHED_E_ACCOUNT_NAME_NOT_FOUND
Unable to establish existence of the account specified.
SCHED_E_ACCOUNT_DBASE_CORRUPT
Corruption was detected in the Task Scheduler security database; the database has been reset.
SCHED_E_NO_SECURITY_SERVICES
Task Scheduler security services are available only on Windows NT.
SCHED_E_UNKNOWN_OBJECT_VERSION
The task object version is either unsupported or invalid.
SCHED_E_UNSUPPORTED_ACCOUNT_OPTION
The task has been configured with an unsupported combination of account settings and run time options.
SCHED_E_SERVICE_NOT_RUNNING
The Task Scheduler Service is not running.
SCHED_E_UNEXPECTEDNODE
The task XML contains an unexpected node.
SCHED_E_NAMESPACE
The task XML contains an element or attribute from an unexpected namespace.
SCHED_E_INVALIDVALUE
The task XML contains a value which is incorrectly formatted or out of range.
SCHED_E_MISSINGNODE
The task XML is missing a required element or attribute.
SCHED_E_MALFORMEDXML
The task XML is malformed.
SCHED_S_SOME_TRIGGERS_FAILED
The task is registered, but not all specified triggers will start the task.
SCHED_S_BATCH_LOGON_PROBLEM
The task is registered, but may fail to start. Batch logon privilege needs to be enabled for the task principal.
SCHED_E_TOO_MANY_NODES
The task XML contains too many nodes of the same type.
SCHED_E_PAST_END_BOUNDARY
The task cannot be started after the trigger end boundary.
SCHED_E_ALREADY_RUNNING
An instance of this task is already running.
SCHED_E_USER_NOT_LOGGED_ON
The task will not run because the user is not logged on.
SCHED_E_INVALID_TASK_HASH
The task image is corrupt or has been tampered with.
SCHED_E_SERVICE_NOT_AVAILABLE
The Task Scheduler service is not available.
SCHED_E_SERVICE_TOO_BUSY
The Task Scheduler service is too busy to handle your request. Please try again later.
SCHED_E_TASK_ATTEMPTED
The Task Scheduler service attempted to run the task, but the task did not run due to one of the constraints in the task definition.
SCHED_S_TASK_QUEUED
The Task Scheduler service has asked the task to run.
SCHED_E_TASK_DISABLED
The task is disabled.
SCHED_E_TASK_NOT_V1_COMPAT
The task has properties that are not compatible with earlier versions of Windows.
SCHED_E_START_ON_DEMAND
The task settings do not allow the task to start on demand.