From 18115b73deec52db0ecd4129f45c0dec15283756 Mon Sep 17 00:00:00 2001 From: jaimeo Date: Fri, 30 Mar 2018 10:15:39 -0700 Subject: [PATCH 1/8] fixed horked table; readded missing text; fresh screenshot --- .../deployment/update/device-health-using.md | 4 +++- .../update/images/app-reliability-main.png | Bin 62615 -> 62615 bytes .../windows-analytics-FAQ-troubleshooting.md | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/windows/deployment/update/device-health-using.md b/windows/deployment/update/device-health-using.md index f14b1981bc..19e2365401 100644 --- a/windows/deployment/update/device-health-using.md +++ b/windows/deployment/update/device-health-using.md @@ -4,7 +4,7 @@ description: Explains how to begin usihg Device Health. ms.prod: w10 ms.mktglfcycl: deploy ms.sitesec: library -ms.date: 03/21/20178 +ms.date: 03/30/2018 ms.pagetype: deploy author: jaimeo --- @@ -169,6 +169,8 @@ We welcome your suggestions and feedback on this filtering process at the [Devic #### Why are there multiple names and entries for the same app? For example, you might see *Skype for Business*, *‘skype for business’*, and *Lync* listed separately, but you only use *Skype for Business*. Or you might see *MyApp Pro* and *MyApp Professional* listed separately, even though they feel like the same thing. +Apps have many elements of metadata which describe them. These include an Add/Remove programs title (“Contoso Suite 12”), executable file names (“ContosoCRM.exe”), executable display name (“Contoso CRM”), and others. App publishers (and in some cases app re-packagers) set these values. For the most part we leave the data as set by the publisher which can lead to some report splitting. In certain cases we apply transformations to reduce splitting, for example we (by design) convert many values to lower case so that incoming data such as "Contoso CRM" and "CONTOSO CRM" become the same app name for reporting. + #### Clicking an app in the App Reliability Events blade sometimes results a List view of records instead of the App Reliability view diff --git a/windows/deployment/update/images/app-reliability-main.png b/windows/deployment/update/images/app-reliability-main.png index 18a1bd7f3148c0acb1608b777c7d7f20fc1eb899..abbcc72690a1649dd3a062e892372d1c28345aae 100644 GIT binary patch delta 55567 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 delta 55567 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 Windows 10 Enterprise E3 or E5 per-device or per-user subscription (including Microsoft 365 F1, E3, or E5)
- Windows 10 Education A3 or A5 (including Microsoft 365 Education A3 or A5)
- Windows VDA E3 or E5 per-device or per-user subscription
- Windows Server 2016 or later | Windows 10 | Enhanced level | +| Device Health | **Any** of the following licenses:
- Windows 10 Enterprise or Windows 10 Education per-device with active Software Assurance
- Windows 10 Enterprise E3 or E5 per-device or per-user subscription (including Microsoft 365 F1, E3, or E5)
- Windows 10 Education A3 or A5 (including Microsoft 365 Education A3 or A5)
- Windows VDA E3 or E5 per-device or per-user subscription
- Windows Server 2016 or later | Windows 10 | - For Windows 10 version 1709 or later: Enhanced (Limited)
- For earlier versions: Enhanced >[!NOTE] > Regarding licensing requirements for Device Health, you do not need per-seat licensing, but only enough licenses to cover your total device usage. For example, if you have 100 E3 licenses, you can monitor 100 devices with Device Health. From 614ce110ad0fd91606dccc26ae60558cab37cc8c Mon Sep 17 00:00:00 2001 From: Greg Lindsay Date: Fri, 30 Mar 2018 19:39:24 +0000 Subject: [PATCH 2/8] Merged PR 6791: New topic for SetupDiag tool New topic for SetupDiag tool --- windows/deployment/TOC.md | 1 + .../resolve-windows-10-upgrade-errors.md | 7 +- windows/deployment/upgrade/setupdiag.md | 247 ++++++++++++++++++ windows/deployment/upgrade/submit-errors.md | 4 +- 4 files changed, 256 insertions(+), 3 deletions(-) create mode 100644 windows/deployment/upgrade/setupdiag.md diff --git a/windows/deployment/TOC.md b/windows/deployment/TOC.md index 2df4f8952f..2e859aa94f 100644 --- a/windows/deployment/TOC.md +++ b/windows/deployment/TOC.md @@ -9,6 +9,7 @@ ### [Deploy Windows 10 Enterprise licenses](deploy-enterprise-licenses.md) ## [Resolve Windows 10 upgrade errors](upgrade/resolve-windows-10-upgrade-errors.md) ### [Submit Windows 10 upgrade errors](upgrade/submit-errors.md) +### [SetupDiag](upgrade/setupdiag.md) ## [Deploy Windows 10](deploy.md) diff --git a/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md b/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md index d3d5edf9a2..65997cec49 100644 --- a/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md +++ b/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md @@ -7,7 +7,7 @@ ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: deploy author: greg-lindsay -ms.date: 02/22/2018 +ms.date: 03/30/2018 ms.localizationpriority: high --- @@ -22,6 +22,7 @@ ms.localizationpriority: high This topic contains a brief introduction to Windows 10 installation processes, and provides resolution procedures that IT administrators can use to resolve issues with Windows 10 upgrade. The following sections and procedures are provided in this guide: +- [SetupDiag](#setupdiag): SetupDiag is a new tool to help you isolate the root cause of an upgrade failure. - [Troubleshooting upgrade errors](#troubleshooting-upgrade-errors): General advice and techniques for troubleshooting Windows 10 upgrade errors.
- [The Windows 10 upgrade process](#the-windows-10-upgrade-process): An explanation of phases used during the upgrade process.
- [Quick fixes](#quick-fixes): Steps you can take to eliminate many Windows upgrade errors.
@@ -38,6 +39,10 @@ This topic contains a brief introduction to Windows 10 installation processes, a - [Other result codes](#other-result-codes): Additional causes and mitigation procedures are provided for some result codes. - [Other error codes](#other-error-codes): Additional causes and mitigation procedures are provided for some error codes. +## SetupDiag + +You can use the SetupDiag.exe tool to automatically analyze log files and determine the root cause of an upgrade failure. If SetupDiag is successful in diagnosing the problem, an error code is displayed. Given this error code, use the procedures here (in this topic) to determine how to repair the upgrade failure. For more information see [SetupDiag](setupdiag.md). + ## Troubleshooting upgrade errors If a Windows 10 upgrade is not successful, it can be very helpful to understand *when* an error occurred in the upgrade process. diff --git a/windows/deployment/upgrade/setupdiag.md b/windows/deployment/upgrade/setupdiag.md new file mode 100644 index 0000000000..71f47196cb --- /dev/null +++ b/windows/deployment/upgrade/setupdiag.md @@ -0,0 +1,247 @@ +--- +title: SetupDiag +description: How to use the SetupDiag tool to diagnose Windows Setup errors +keywords: deploy, troubleshoot, windows, 10, upgrade, update, setup, diagnose +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# SetupDiag + +**Applies to** +- Windows 10 + +[SetupDiag.exe](https://go.microsoft.com/fwlink/?linkid=870142) is a standalone diagnostic tool that can be used to obtain details about why a Windows 10 upgrade was unsuccessful. + +SetupDiag works by examining Windows Setup log files. It attempts to parse these log files to determine the root cause of a failure to update or upgrade the computer to Windows 10. SetupDiag can be run on the computer that failed to update, or you can export logs from the computer to another location and run SetupDiag in offline mode. + +See the [Release notes](#release-notes) section at the bottom of this topic for information about updates to this tool. + +## Requirements + +1. The destination OS must be Windows 10. +2. [.NET Framework 4.6](https://www.microsoft.com/download/details.aspx?id=48137) must be installed. If you are not sure what version of .NET is currently installed, see [How to: Determine Which .NET Framework Versions Are Installed](https://docs.microsoft.com/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed). You can also use the following command-line query to display the installed v4 versions: + + ``` + reg query "HKLM\SOFTWARE\Microsoft\Net Framework Setup\NDP\v4" /s + ``` + +## Parameters + +| Parameter | Description | +| --- | --- | +| /? |
  • Displays interactive help
| +| /Output:\ |
  • This optional parameter enables you to specify the output file for results. This is where you will find what SetupDiag was able to determine. Only text format output is supported. UNC paths will work, provided the context under which SetupDiag runs has access to the UNC path. If the path has a space in it, you must enclose the entire path in double quotes (see the example section below).
  • Default: If not specified, SetupDiag will create the file **SetupDiagResults.log** in the same directory where SetupDiag.exe is run.
| +| /Mode:\ |
  • This optional parameter allows you to specify the mode in which SetupDiag will operate: Offline or Online.
  • Offline: tells SetupDiag to run against a set of log files already captured from a failed system. In this mode you can run anywhere you have access to the log files. This mode does not require SetupDiag to be run on the computer that failed to update. When you specify offline mode, you must also specify the /LogsPath: parameter.
  • Online: tells SetupDiag that it is being run on the computer that failed to update. SetupDiag will attempt find log files and resources in standard Windows locations, such as the **%SystemDrive%\$Windows.~bt** directory for setup log files.
  • Log file search paths are configurable in the SetupDiag.exe.config file, under the SearchPath key. Search paths are comma separated. Note: A large number of search paths will extend the time required for SetupDiag to return results.
  • Default: If not specified, SetupDiag will run in Online mode.
| +| /LogsPath:\ |
  • This optional parameter is required only when **/Mode:Offline** is specified. This tells SetupDiag.exe where to find the log files. These log files can be in a flat folder format, or containing multiple subdirectories. SetupDiag will recursively search all child directories. This parameter should be omitted when the **/Mode:Online** is specified.
| +| /ZipLogs:\ |
  • This optional parameter tells SetupDiag.exe to create a zip file continuing its results and all the log files it parsed. The zip file is created in the same directory where SetupDiag.exe is run.
  • Default: If not specified, a value of 'true' is used.
| +| /Verbose |
  • This optional parameter will output much more data to the log file produced by SetupDiag.exe. By default SetupDiag will only produce a log file entry for serious errors. Using **/Verbose** will cause SetupDiag to always produce a log file with debugging details, which can be useful when reporting a problem with SetupDiag.
| + +### Examples: + +In the following example, SetupDiag is run with default parameters (online mode, results file is SetupDiagResults.log in the same folder where SetupDiag is run). + +``` +SetupDiag.exe +``` + +In the following example, SetupDiag is specified to run in Online mode (this is the default). It will know where to look for logs on the current (failing) system, so there is no need to gather logs ahead of time. A custom location for results is specified. + +``` +SetupDiag.exe /Output:C:\SetupDiag\Results.log /Mode:Online +``` + +The following example uses the /Output parameter to save results to a path name that contains a space: + +``` +SetupDiag /Output:"C:\Tools\SetupDiag\SetupDiag Results\Results.log" +``` + +The following example specifies that SetupDiag is to run in offline mode, and to process the log files found in **D:\Temp\Logs\LogSet1**. + +``` +SetupDiag.exe /Output:C:\SetupDiag\Results.log /Mode:Offline /LogsPath:D:\Temp\Logs\LogSet1 +``` + +## Log files + +[Windows Setup Log Files and Event Logs](https://docs.microsoft.com/windows-hardware/manufacture/desktop/windows-setup-log-files-and-event-logs) has information about where logs are created during Windows Setup. For offline processing, you should run SetupDiag against the contents of the entire folder. For example, depending on when the upgrade failed, copy one of the following folders to your offline location: + +\\$Windows.~bt\sources\panther +
\\$Windows.~bt\Sources\Rollback +
\Windows\Panther +
\Windows\Panther\NewOS + +If you copy the parent folder and all sub-folders, SetupDiag will automatically search for log files in all subdirectories. + +## Setup bug check analysis + +When Microsoft Windows encounters a condition that compromises safe system operation, the system halts. This condition is called a bug check. It is also commonly referred to as a system crash, a kernel error, a Stop error, or BSOD. Typically a hardware device, hardware driver, or related software causes this error. + +If crash dumps [are enabled](https://docs.microsoft.com/windows-hardware/drivers/debugger/enabling-a-kernel-mode-dump-file) on the system, a crash dump file is created. If the bug check occurs during an upgrade, Windows Setup will extract a minidump (setupmem.dmp) file. SetupDiag can also debug these setup related minidumps. + +To debug a setup related bug check, you must: +- Specify the **/Mode:Offline** and **/LogsPath** parameters. You cannot debug memory dumps in online mode. +- Gather the setup memory dump file (setupmem.dmp) from the failing system. + - Setupmem.dmp will be created in either **%SystemDrive%\$Windows.~bt\Sources\Rollback**, or in **%WinDir%\Panther\NewOS\Rollback** depending on when the bug check occurs. +- Install the [Windows Debugging Tools](https://docs.microsoft.com/windows-hardware/drivers/debugger/debugger-download-tools) on the computer that runs SetupDiag. + +In the following example, the **setupmem.dmp** file is copied to the **D:\Dump** directory and the Windows Debugging Tools are installed prior to running SetupDiag: + +``` +SetupDiag.exe /Output:C:\SetupDiag\Dumpdebug.log /Mode:Offline /LogsPath:D:\Dump +``` + +## Known issues + +1. Some rules can take a long time to process if the log files involved as large. +2. SetupDiag only outputs data in a text format. If another format is desired, please provide this [feedback](#feedback). +3. If the failing computer is opted into the Insider program and getting regular pre-release updates, or an update is already pending on the computer when SetupDiag is run, it can encounter problems trying to open these log files. This will likely cause a failure to determine a root cause. In this case, try gathering the log files and running SetupDiag in offline mode. + + +## Sample output + +The following is an example where SetupDiag is run in offline mode. In this example, it is found that disk space is not sufficient to complete Windows Setup: + +``` +C:\setupdiag>SetupDiag /Output:C:\setupdiag\results.log /Mode:Offline /LogsPath:C:\setupdiag\logfiles + + +SetupDiag v1.00 +Copyright (c) Microsoft Corporation. All rights reserved. + + +Searching for setup logs, this can take a minute or more depending on the number and size of the logs...please wait. + Found 1 setupact.logs. + Processing setupact.log 1 of 1 +Gathering information from setup logs. + +SetupDiag: processing rule: CompatScanOnly. +...No match. + + +SetupDiag: processing rule: BitLockerHardblock. +...No match. + + +SetupDiag: processing rule: VHDHardblock. +...No match. + + +SetupDiag: processing rule: PortableWorkspaceHardblock. +...No match. + + +SetupDiag: processing rule: AuditModeHardblock. +...No match. + + +SetupDiag: processing rule: SafeModeHardblock. +...No match. + + +SetupDiag: processing rule: InsufficientSystemPartitionDiskSpaceHardblock. +...No match. + + +SetupDiag: processing rule: HardblockApplication. +...No match. + + +SetupDiag: processing rule: HardblockDeviceOrDriver. +...No match. + + +SetupDiag: processing rule: HardblockMismatchedLanguage. +..No match. + + +SetupDiag: processing rule: HardblockFlightSigning. +..No match. + + +SetupDiag: processing rule: DiskSpaceBlockInDownLevel. +... + +Matching Profile found: DiskSpaceBlockInDownLevel - 6080AFAC-892E-4903-94EA-7A17E69E549E +Warning: Found Disk Space Hard Block. +Warning: You must free up at least 6603 MB of space on the System Drive, and try again. + +SetupDiag found 1 matching issue. +SetupDiag results were logged to: c:\setupdiag\results.log +Logs ZipFile created at: c:\setupdiag\Logs.zip + +``` + +## Rules + +When searching log files, SetupDiag uses a set of rules to match known issues. These rules are contained in the rules.xml file which is extracted when SetupDiag is run. The rules.xml file might be updated as new versions of SetupDiag are made available. See [Release notes](#release-notes) for more information. + +Each rule name and its associated unique rule identifier are listed with a description of the known upgrade-blocking issue. In the rule descriptions, the term "down-level" refers to the first phase of the upgrade process, which runs under the starting OS. + +1. CompatScanOnly - FFDAFD37-DB75-498A-A893-472D49A1311D + - This rule indicates that setup.exe was called with a specific command line parameter that indicated setup was to do a compat scan only, not an upgrade. +2. BitLockerHardblock - C30152E2-938E-44B8-915B-D1181BA635AE + - This is a block when the target OS does not support BitLocker, yet the host OS has BitLocker enabled. +3. VHDHardblock - D9ED1B82-4ED8-4DFD-8EC0-BE69048978CC + - This block happens when the host OS is booted to a VHD image. Upgrade is not supported when the host OS is booted from a VHD image. +4. PortableWorkspaceHardblock - 5B0D3AB4-212A-4CE4-BDB9-37CA404BB280 + - This indicates that the host OS is booted from a Windows To-Go device (USB key). Upgrade is not supported in the Windows To-Go environment. +5. AuditModeHardblock - A03BD71B-487B-4ACA-83A0-735B0F3F1A90 + - This block indicates that the host OS is currently booted into Audit Mode, a special mode for modifying the Windows state. Upgrade is not supported from this state. +6. SafeModeHardblock - 404D9523-B7A8-4203-90AF-5FBB05B6579B + - This block indicates that the host OS is booted to Safe Mode, where upgrade is not supported. +7. InsufficientSystemPartitionDiskSpaceHardblock - 3789FBF8-E177-437D-B1E3-D38B4C4269D1 + - This block is encountered when setup determines the system partition (where the boot loader files are stored) does not have enough space to be serviced with the newer boot files required during the upgrade process. +8. HardblockApplication - D6FBF046-5927-4FCD-B998-FE21CA7F6AC9 + - This rule indicates the host OS had one or more hard blocked applications that need to be uninstalled prior to continuing. This typically is only a problem when /Quiet is specified on the command line. +9. HardblockDeviceOrDriver - ED3AEFA1-F3E2-4F33-8A21-184ADF215B1B + - This indicates a device driver that is loaded on the host OS is not compatible with the newer OS version and needs to be removed prior to the upgrade. +10. HardblockMismatchedLanguage - 60BA8449-CF23-4D92-A108-D6FCEFB95B45 + - This rule indicates the host OS and the target OS language editions do not match. +11. HardblockFlightSigning - 598F2802-3E7F-4697-BD18-7A6371C8B2F8 + - This rule indicates the target OS is a pre-release, Windows Insider build, and the target machine has Secure Boot enabled. This will block the pre-release signed build from booting if installed on the machine. +12. DiskSpaceBlockInDownLevel - 6080AFAC-892E-4903-94EA-7A17E69E549E + - This failure indicates the system ran out of disk space during the down-level operations of upgrade. +13. DiskSpaceFailure - 981DCBA5-B8D0-4BA7-A8AB-4030F7A10191 + - This failure indicates the system drive ran out of available disk space at some point after the first reboot into the upgrade. +14. DeviceInstallHang - 37BB1C3A-4D79-40E8-A556-FDA126D40BC6 + - This failure rule indicates the system hung or bug checked during the device installation phase of upgrade. +15. DebugSetupMemoryDump - C7C63D8A-C5F6-4255-8031-74597773C3C6 + - This offline only rule indicates a bug check occurred during setup. If the debugger tools are available on the system, SetupDiag will debug the memory dump and provide details. +16. DebugSetupCrash - CEEBA202-6F04-4BC3-84B8-7B99AED924B1 + - This offline only rule indicates that setup itself encountered a failure that resulted in a process memory dump. If the debugger tools are installed on the system, SetupDiag will debug the memory dump and give further details. +17. DebugMemoryDump - 505ED489-329A-43F5-B467-FCAAF6A1264C + - This offline only rule is for any memory.dmp file that resulted during the setup/upgrade operation. If the debugger tools are installed on the system, SetupDiag will debug the memory dump and give further details. +18. FindDebugInfoFromRollbackLog - 9600EB68-1120-4A87-9FE9-3A4A70ACFC37 + - This rule will determine and give details when a bug check occurs during the setup/upgrade process that resulted in a memory dump, but without the requirement of the debugger package being on the executing machine. +19. AdvancedInstallerFailed - 77D36C96-32BE-42A2-BB9C-AAFFE64FCADC + - Finds fatal advanced installer operations that cause setup failures. +20. FindSuccessfulUpgrade - 8A0824C8-A56D-4C55-95A0-22751AB62F3E + - Determines if the given setup was a success or not based off the logs. +21. FindSetupHostReportedFailure - 6253C04F-2E4E-4F7A-B88E-95A69702F7EC + - Gives information about failures surfaced early in the upgrade process by setuphost.exe +22. FindDownlevelFailure - 716334B7-F46A-4BAA-94F2-3E31BC9EFA55 + - Gives failure information surfaced by SetupPlatform, later in the down-level phase. +23. FindAbruptDownlevelFailure - 55882B1A-DA3E-408A-9076-23B22A0472BD + - Gives last operation failure information when the system fails in the down-level, but the log just ends abruptly. +24. FindSetupPlatformDownlevelFailure - 307A0133-F06B-4B75-AEA8-116C3B53C2D1 + - Gives last operation and phase failure information when Setup indicates a down-level failure. +25. FindSetupPlatformDownlevelFailedOperation - 087610ED-329A-4DE9-A54C-38A3A07B5B8B + - Gives last phase and error information when Setup indicates a down-level failure. +26. FindRollbackFailure - 3A43C9B5-05B3-4F7C-A955-88F991BB5A48 + - Gives last operation, failure phase and error information when a rollback occurs. + + +## Release notes + +03/30/2018 - SetupDiag v1.00 released with 26 rules, as a standalone tool available from the Download Center. + +## Related topics + +[Resolve Windows 10 upgrade errors: Technical information for IT Pros](https://docs.microsoft.com/en-us/windows/deployment/upgrade/resolve-windows-10-upgrade-errors) \ No newline at end of file diff --git a/windows/deployment/upgrade/submit-errors.md b/windows/deployment/upgrade/submit-errors.md index 2118867a21..01a1e06134 100644 --- a/windows/deployment/upgrade/submit-errors.md +++ b/windows/deployment/upgrade/submit-errors.md @@ -7,7 +7,7 @@ ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: deploy author: greg-lindsay -ms.date: 02/01/2018 +ms.date: 03/16/2018 ms.localizationpriority: high --- @@ -47,7 +47,7 @@ The Feedback Hub will open. - Are there any external devices connected? - If you used the link above, the category and subcategory will be automatically selected. If it is not selected, choose **Install and Update** and **Windows Installation**. -You can attach a screenshot or file if desired. This is optional. +You can attach a screenshot or file if desired. This is optional, but can be extremely helpful when diagnosing your upgrade issue. The location of these files is described here: [Windows Setup log files and event logs](https://docs.microsoft.com/windows-hardware/manufacture/desktop/windows-setup-log-files-and-event-logs). Click **Submit** to send your feedback. From 716e60069ef5c832c08ac97564b14dab632e56f9 Mon Sep 17 00:00:00 2001 From: Justin Hall Date: Fri, 30 Mar 2018 15:26:13 -0700 Subject: [PATCH 3/8] added threshold info --- .../security-policy-settings/account-lockout-duration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/security/threat-protection/security-policy-settings/account-lockout-duration.md b/windows/security/threat-protection/security-policy-settings/account-lockout-duration.md index 1adc579110..504909f266 100644 --- a/windows/security/threat-protection/security-policy-settings/account-lockout-duration.md +++ b/windows/security/threat-protection/security-policy-settings/account-lockout-duration.md @@ -29,7 +29,7 @@ This policy setting is dependent on the **Account lockout threshold** policy set If [Account lockout threshold](account-lockout-threshold.md) is configured, after the specified number of failed attempts, the account will be locked out. If th **Account lockout duration** is set to 0, the account will remain locked until an administrator unlocks it manually. -It is advisable to set **Account lockout duration** to approximately 30 minutes. To specify that the account will never be locked out, set the value to 0. To configure the value for this policy setting so that it never automatically unlocks the account might seem like a good idea; however, doing so can increase the number of requests that your organization’s Help Desk receives to unlock accounts that were locked by mistake. +It is advisable to set **Account lockout duration** to approximately 15 minutes. To specify that the account will never be locked out, set the Account lockout threshold value to 0. ### Location From 30a4b95f90a85e341ec3bb5a54e3ab166eab6cf4 Mon Sep 17 00:00:00 2001 From: Greg Lindsay Date: Fri, 30 Mar 2018 23:18:12 +0000 Subject: [PATCH 4/8] Merged PR 6803: I broke apart the topic into multiple child topics I broke apart the topic into multiple child topics --- windows/deployment/TOC.md | 7 + windows/deployment/upgrade/log-files.md | 168 +++ windows/deployment/upgrade/quick-fixes.md | 56 + .../upgrade/resolution-procedures.md | 684 ++++++++++ .../resolve-windows-10-upgrade-errors.md | 1103 +---------------- windows/deployment/upgrade/setupdiag.md | 4 + windows/deployment/upgrade/submit-errors.md | 4 + .../upgrade/troubleshoot-upgrade-errors.md | 91 ++ .../deployment/upgrade/upgrade-error-codes.md | 144 +++ .../upgrade/windows-error-reporting.md | 66 + 10 files changed, 1255 insertions(+), 1072 deletions(-) create mode 100644 windows/deployment/upgrade/log-files.md create mode 100644 windows/deployment/upgrade/quick-fixes.md create mode 100644 windows/deployment/upgrade/resolution-procedures.md create mode 100644 windows/deployment/upgrade/troubleshoot-upgrade-errors.md create mode 100644 windows/deployment/upgrade/upgrade-error-codes.md create mode 100644 windows/deployment/upgrade/windows-error-reporting.md diff --git a/windows/deployment/TOC.md b/windows/deployment/TOC.md index 2e859aa94f..d36561005b 100644 --- a/windows/deployment/TOC.md +++ b/windows/deployment/TOC.md @@ -8,6 +8,13 @@ ### [Configure VDA for Subscription Activation](vda-subscription-activation.md) ### [Deploy Windows 10 Enterprise licenses](deploy-enterprise-licenses.md) ## [Resolve Windows 10 upgrade errors](upgrade/resolve-windows-10-upgrade-errors.md) +### [Quick fixes](upgrade\quick-fixes.md) +### [SetupDiag](upgrade/setupdiag.md) +### [Troubleshooting upgrade errors](upgrade/troubleshoot-upgrade-errors.md) +### [Windows error reporting](upgrade/windows-error-reporting.md) +### [Upgrade error codes](upgrade/upgrade-error-codes.md) +### [Log files](upgrade/log-files.md) +### [Resolution procedures](upgrade/resolution-procedures.md) ### [Submit Windows 10 upgrade errors](upgrade/submit-errors.md) ### [SetupDiag](upgrade/setupdiag.md) diff --git a/windows/deployment/upgrade/log-files.md b/windows/deployment/upgrade/log-files.md new file mode 100644 index 0000000000..72d23e920b --- /dev/null +++ b/windows/deployment/upgrade/log-files.md @@ -0,0 +1,168 @@ +--- +title: Log files - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Log files + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 400 level topic (advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + + +Several log files are created during each phase of the upgrade process. These log files are essential for troubleshooting upgrade problems. By default, the folders that contain these log files are hidden on the upgrade target computer. To view the log files, configure Windows Explorer to view hidden items, or use a tool to automatically gather these logs. The most useful log is **setupact.log**. The log files are located in a different folder depending on the Windows Setup phase. Recall that you can determine the phase from the extend code. + +Note: Also see the [Windows Error Reporting](windows-error-reporting.md) section in this document for help locating error codes and log files. + +The following table describes some log files and how to use them for troubleshooting purposes:
+ +
+ + + + + + + + + + + + + + + + +
Log filePhase: LocationDescriptionWhen to use
setupact.logDown-Level:
$Windows.~BT\Sources\Panther
Contains information about setup actions during the downlevel phase. All down-level failures and starting point for rollback investigations.
This is the most important log for diagnosing setup issues.
OOBE:
$Windows.~BT\Sources\Panther\UnattendGC
Contains information about actions during the OOBE phase.Investigating rollbacks that failed during OOBE phase and operations – 0x4001C, 0x4001D, 0x4001E, 0x4001F.
Rollback:
$Windows.~BT\Sources\Rollback
Contains information about actions during rollback.Investigating generic rollbacks - 0xC1900101.
Pre-initialization (prior to downlevel):
Windows
Contains information about initializing setup.If setup fails to launch.
Post-upgrade (after OOBE):
Windows\Panther
Contains information about setup actions during the installation.Investigate post-upgrade related issues.
setuperr.logSame as setupact.logContains information about setup errors during the installation.Review all errors encountered during the installation phase.
miglog.xmlPost-upgrade (after OOBE):
Windows\Panther
Contains information about what was migrated during the installation.Identify post upgrade data migration issues.
BlueBox.logDown-Level:
Windows\Logs\Mosetup
Contains information communication between setup.exe and Windows Update.Use during WSUS and WU down-level failures or for 0xC1900107.
Supplemental rollback logs:
+Setupmem.dmp
+setupapi.dev.log
+Event logs (*.evtx)
$Windows.~BT\Sources\RollbackAdditional logs collected during rollback. +Setupmem.dmp: If OS bugchecks during upgrade, setup will attempt to extract a mini-dump.
+Setupapi: Device install issues - 0x30018
+Event logs: Generic rollbacks (0xC1900101) or unexpected reboots.
+ +## Log entry structure + +A setupact.log or setuperr.log entry includes the following elements: + +
    +
  1. The date and time - 2016-09-08 09:20:05. +
  2. The log level - Info, Warning, Error, Fatal Error. +
  3. The logging component - CONX, MOUPG, PANTHR, SP, IBSLIB, MIG, DISM, CSI, CBS. +
      +
    • The logging components SP (setup platform), MIG (migration engine), and CONX (compatibility information) are particularly useful for troubleshooting Windows Setup errors. +
    +
  4. The message - Operation completed successfully. +
+ +See the following example: + +| Date/Time | Log level | Component | Message | +|------|------------|------------|------------| +|2016-09-08 09:23:50,| Warning | MIG | Could not replace object C:\Users\name\Cookies. Target Object cannot be removed.| + + +## Analyze log files + +>The following instructions are meant for IT professionals. Also see the [Upgrade error codes](upgrade-error-codes.md) section in this guide to familiarize yourself with [result codes](upgrade-error-codes.md#result-codes) and [extend codes](upgrade-error-codes.md#extend-codes). + +
To analyze Windows Setup log files: + +
    +
  1. Determine the Windows Setup error code. This code should be returned by Windows Setup if it is not successful with the upgrade process. +
  2. Based on the [extend code](upgrade-error-codes.md#extend-codes) portion of the error code, determine the type and location of a [log files](#log-files) to investigate. +
  3. Open the log file in a text editor, such as notepad. +
  4. Using the [result code](upgrade-error-codes.md#result-codes) portion of the Windows Setup error code, search for the result code in the file and find the last occurrence of the code. Alternatively search for the "abort" and abandoning" text strings described in step 7 below. +
  5. To find the last occurrence of the result code: +
      +
    1. Scroll to the bottom of the file and click after the last character. +
    2. Click Edit. +
    3. Click Find. +
    4. Type the result code. +
    5. Under Direction select Up. +
    6. Click Find Next. +
    +
  6. When you have located the last occurrence of the result code, scroll up a few lines from this location in the file and review the processes that failed just prior to generating the result code. +
  7. Search for the following important text strings: +
      +
    • Shell application requested abort +
    • Abandoning apply due to error for object +
    +
  8. Decode Win32 errors that appear in this section. +
  9. Write down the timestamp for the observed errors in this section. +
  10. Search other log files for additional information matching these timestamps or errors. +
+ +For example, assume that the error code for an error is 0x8007042B - 0x2000D. Searching for "8007042B" reveals the following content from the setuperr.log file: + +>Some lines in the text below are shortened to enhance readability. The date and time at the start of each line (ex: 2016-10-05 15:27:08) is shortened to minutes and seconds, and the certificate file name which is a long text string is shortened to just "CN." + +
setuperr.log content: + +
+27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
+27:08, Error           MIG    Error 1392 while gathering object C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Shell application requested abort![gle=0x00000570]
+27:08, Error                  Gather failed. Last error: 0x00000000
+27:08, Error           SP     SPDoFrameworkGather: Gather operation failed. Error: 0x0000002C
+27:09, Error           SP     CMigrateFramework: Gather framework failed. Status: 44
+27:09, Error           SP     Operation failed: Migrate framework (Full). Error: 0x8007042B[gle=0x000000b7]
+27:09, Error           SP     Operation execution failed: 13. hr = 0x8007042B[gle=0x000000b7]
+27:09, Error           SP     CSetupPlatformPrivate::Execute: Execution of operations queue failed, abandoning. Error: 0x8007042B[gle=0x000000b7]
+
+ +The first line indicates there was an error **0x00000570** with the file **C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]** (shown below): + +
+27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
+
+ +
The error 0x00000570 is a [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) corresponding to: ERROR_FILE_CORRUPT: The file or directory is corrupted and unreadable. + +Therefore, Windows Setup failed because it was not able to migrate the corrupt file **C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\[CN]**. This file is a local system certificate and can be safely deleted. Searching the setupact.log file for additional details, the phrase "Shell application requested abort" is found in a location with the same timestamp as the lines in setuperr.log. This confirms our suspicion that this file is the cause of the upgrade failure: + +
setupact.log content: + +
+27:00, Info                   Gather started at 10/5/2016 23:27:00
+27:00, Info [0x080489] MIG    Setting system object filter context (System)
+27:00, Info [0x0803e5] MIG    Not unmapping HKCU\Software\Classes; it is not mapped
+27:00, Info [0x0803e5] MIG    Not unmapping HKCU; it is not mapped
+27:00, Info            SP     ExecuteProgress: Elapsed events:1 of 4, Percent: 12
+27:00, Info [0x0802c6] MIG    Processing GATHER for migration unit: \UpgradeFramework (CMXEAgent)
+27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
+27:08, Error           MIG    Error 1392 while gathering object C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Shell application requested abort![gle=0x00000570]
+27:08, Info            SP     ExecuteProgress: Elapsed events:2 of 4, Percent: 25
+27:08, Info            SP     ExecuteProgress: Elapsed events:3 of 4, Percent: 37
+27:08, Info [0x080489] MIG    Setting system object filter context (System)
+27:08, Info [0x0803e5] MIG    Not unmapping HKCU\Software\Classes; it is not mapped
+27:08, Info [0x0803e5] MIG    Not unmapping HKCU; it is not mapped
+27:08, Info            MIG    COutOfProcPluginFactory::FreeSurrogateHost: Shutdown in progress.
+27:08, Info            MIG    COutOfProcPluginFactory::LaunchSurrogateHost::CommandLine: -shortened-
+27:08, Info            MIG    COutOfProcPluginFactory::LaunchSurrogateHost: Successfully launched host and got control object.
+27:08, Error                  Gather failed. Last error: 0x00000000
+27:08, Info                   Gather ended at 10/5/2016 23:27:08 with result 44
+27:08, Info                   Leaving MigGather method
+27:08, Error           SP     SPDoFrameworkGather: Gather operation failed. Error: 0x0000002C
+
+ + +
This analysis indicates that the Windows upgrade error can be resolved by deleting the C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\[CN] file. Note: In this example, the full, unshortened file name is C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\be8228fb2d3cb6c6b0ccd9ad51b320b4_a43d512c-69f2-42de-aef9-7a88fabdaa3f. + +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) diff --git a/windows/deployment/upgrade/quick-fixes.md b/windows/deployment/upgrade/quick-fixes.md new file mode 100644 index 0000000000..d11f924e4d --- /dev/null +++ b/windows/deployment/upgrade/quick-fixes.md @@ -0,0 +1,56 @@ +--- +title: Quick fixes - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Quick fixes + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 100 level topic (basic).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + +The following steps can resolve many Windows upgrade problems. + +
    +
  1. Remove nonessential external hardware, such as docks and USB devices.
  2. +
  3. Check all hard drives for errors and attempt repairs. To automatically repair hard drives, open an elevated command prompt, switch to the drive you wish to repair, and type the following command. You will be required to reboot the computer if the hard drive being repaired is also the system drive. +
      +
    • chkdsk /F
    • +
    +
  4. +
  5. Attempt to restore and repair system files by typing the following commands at an elevated command prompt. It may take several minutes for the command operations to be completed. For more information, see [Repair a Windows Image](https://msdn.microsoft.com/windows/hardware/commercialize/manufacture/desktop/repair-a-windows-image). +
      +
    • DISM.exe /Online /Cleanup-image /Restorehealth
    • +
    • sfc /scannow
    • +
    +
  6. +
  7. Update Windows so that all available recommended updates are installed, and ensure the computer is rebooted if this is necessary to complete installation of an update.
  8. +
  9. Uninstall non-Microsoft antivirus software. +
      +
    • Use Windows Defender for protection during the upgrade. +
    • Verify compatibility information and re-install antivirus applications after the upgrade.
    • +
    +
  10. Uninstall all nonessential software.
  11. +
  12. Update firmware and drivers.
  13. +
  14. Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
  15. +
  16. Verify at least 16 GB of free space is available to upgrade a 32-bit OS, or 20 GB for a 64-bit OS. +
+ +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) diff --git a/windows/deployment/upgrade/resolution-procedures.md b/windows/deployment/upgrade/resolution-procedures.md new file mode 100644 index 0000000000..713ccc1b67 --- /dev/null +++ b/windows/deployment/upgrade/resolution-procedures.md @@ -0,0 +1,684 @@ +--- +title: Resolution procedures - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Resolution procedures + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 400 level topic (advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + + +## 0xC1900101 + +A frequently observed result code is 0xC1900101. This result code can be thrown at any stage of the upgrade process, with the exception of the downlevel phase. 0xC1900101 is a generic rollback code, and usually indicates that an incompatible driver is present. The incompatible driver can cause blue screens, system hangs, and unexpected reboots. Analysis of supplemental log files is often helpful, such as:
+ +- The minidump file: $Windows.~bt\Sources\Rollback\setupmem.dmp, +- Event logs: $Windows.~bt\Sources\Rollback\*.evtx +- The device install log: $Windows.~bt\Sources\Rollback\setupapi\setupapi.dev.log + +The device install log is particularly helpful if rollback occurs during the sysprep operation (extend code 0x30018). To resolve a rollback due to driver conflicts, try running setup using a minimal set of drivers and startup programs by performing a [clean boot](https://support.microsoft.com/en-us/kb/929135) before initiating the upgrade process. + +
See the following general troubleshooting procedures associated with a result code of 0xC1900101: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
Code +
0xC1900101 - 0x20004 +
+ +
+
Cause +
Windows Setup encountered an error during the SAFE_OS with the INSTALL_RECOVERY_ENVIRONMENT operation +
This is generally caused by out-of-date drivers. +
+
+ + +
Mitigation +
Uninstall antivirus applications. +
Remove all unused SATA devices. +
Remove all unused devices and drivers. +
Update drivers and BIOS. +
+
+ + +
Code +
0xC1900101 - 0x2000c +
+ +
+
Cause +
Windows Setup encountered an unspecified error during Wim apply in the WinPE phase. +
This is generally caused by out-of-date drivers. +
+
+ + +
Mitigation +
Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. +
Contact your hardware vendor to obtain updated device drivers. +
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process. +
+
+ + +
Code +
0xC1900101 - 0x20017 + +
+ +
+
Cause +
A driver has caused an illegal operation. +
Windows was not able to migrate the driver, resulting in a rollback of the operating system. +
This is a SafeOS boot failure, typically caused by drivers or non-Microsoft disk encryption software. +
+
+ + +
Mitigation +
+Ensure that all that drivers are updated.
+Open the Setuperr.log and Setupact.log files in the %windir%\Panther directory, and then locate the problem drivers. +
For more information, see [Understanding Failures and Log Files](https://technet.microsoft.com/en-us/library/ee851579.aspx). +
Update or uninstall the problem drivers. +
+
+ + +
Code +
0xC1900101 - 0x30018 +
+ +
+
Cause +
A device driver has stopped responding to setup.exe during the upgrade process. +
+
+ + +
Mitigation +
+Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. +
Contact your hardware vendor to obtain updated device drivers. +
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process. +
+
+ + +
Code +
0xC1900101 - 0x3000D +
+ +
+
Cause +
Installation failed during the FIRST_BOOT phase while attempting the MIGRATE_DATA operation. +
This can occur due to a problem with a display driver. + +
+
+ + +
Mitigation +
+Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. +
Update or uninstall the display driver. +
+
+ + +
Code +
0xC1900101 - 0x4000D +
+ +
+
Cause +
A rollback occurred due to a driver configuration issue. +
Installation failed during the second boot phase while attempting the MIGRATE_DATA operation. + +
This can occur due to incompatible drivers. + +
+
+ + +
Mitigation +
+
Check supplemental rollback logs for a setupmem.dmp file, or event logs for any unexpected reboots or errors. +
Review the rollback log and determine the stop code. +
The rollback log is located in the **C:\$Windows.~BT\Sources\Panther** folder. An example analysis is shown below. This example is not representative of all cases: +
Info SP Crash 0x0000007E detected +
Info SP Module name : +
Info SP Bugcheck parameter 1 : 0xFFFFFFFFC0000005 +
Info SP Bugcheck parameter 2 : 0xFFFFF8015BC0036A +
Info SP Bugcheck parameter 3 : 0xFFFFD000E5D23728 +
Info SP Bugcheck parameter 4 : 0xFFFFD000E5D22F40 +
Info SP Cannot recover the system. +
Info SP Rollback: Showing splash window with restoring text: Restoring your previous version of Windows. + + +
Typically, there is a dump file for the crash to analyze. If you are not equipped to debug the dump, then attempt the following basic troubleshooting procedures:
+ +1. Make sure you have enough disk space.
+2. If a driver is identified in the bug check message, disable the driver or check with the manufacturer for driver updates.
+3. Try changing video adapters.
+4. Check with your hardware vendor for any BIOS updates.
+5. Disable BIOS memory options such as caching or shadowing. +

+
+
+ + +
Code +
0xC1900101 - 0x40017 +
+ +
+
Cause +
Windows 10 upgrade failed after the second reboot. +
This is usually caused by a faulty driver. For example: antivirus filter drivers or encryption drivers. +
+
+ + +
Mitigation +
Clean boot into Windows, and then attempt the upgrade to Windows 10.
+ +For more information, see [How to perform a clean boot in Windows](https://support.microsoft.com/en-us/kb/929135). + +

Ensure you select the option to "Download and install updates (recommended)." +
+
+ +

0x800xxxxx

+ +
Result codes starting with the digits 0x800 are also important to understand. These error codes indicate general operating system errors, and are not unique to the Windows upgrade process. Examples include timeouts, devices not functioning, and a process stopping unexpectedly. + +
See the following general troubleshooting procedures associated with a result code of 0x800xxxxx:
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
Code +
+ +80040005 - 0x20007 + +
+ +
+
Cause +
+ +An unspecified error occurred with a driver during the SafeOS phase. + +
+
+ + +
Mitigation +
+ +This error has more than one possible cause. Attempt [quick fixes](quick-fixes.md), and if not successful, [analyze log files](log-files.md#analyze-log-files) in order to determine the problem and solution. + +
+
+ + +
Code +
+ +0x80073BC3 - 0x20009
+0x8007002 - 0x20009
+0x80073B92 - 0x20009 + +
+ +
+
Cause +
+ +The requested system device cannot be found, there is a sharing violation, or there are multiple devices matching the identification criteria. + +
+
+ + +
Mitigation +
+ +These errors occur during partition analysis and validation, and can be caused by the presence of multiple system partitions. For example, if you installed a new system drive but left the previous system drive connected, this can cause a conflict. To resolve the errors, disconnect or temporarily disable drives that contain the unused system partition. You can reconnect the drive after the upgrade has completed. Alternatively, you can delete the unused system partition. + +
+
+ + +
Code +
+ +800704B8 - 0x3001A + +
+ +
+
Cause +
+ +An extended error has occurred during the first boot phase. + +
+
+ + +
Mitigation +
+ +Disable or uninstall non-Microsoft antivirus applications, disconnect all unnecessary devices, and perform a [clean boot](https://support.microsoft.com/en-us/kb/929135). + +
+
+ + +
Code +
+ +8007042B - 0x4000D + +
+ +
+
Cause +
+ +The installation failed during the second boot phase while attempting the MIGRATE_DATA operation. +
This issue can occur due to file system, application, or driver issues. + +
+
+ + +
Mitigation +
+ +[Analyze log files](log-files.md#analyze-log-files) in order to determine the file, application, or driver that is not able to be migrated. Disconnect, update, remove, or replace the device or object. + +
+
+ + +
Code +
+ +8007001F - 0x3000D + +
+ +
+
Cause +
+ +The installation failed in the FIRST_BOOT phase with an error during MIGRATE_DATA operation. + +
+
+ + +
Mitigation +
+ +[Analyze log files](log-files.md#analyze-log-files) in order to determine the files or registry entries that are blocking data migration. + +This error can be due to a problem with user profiles. It can occur due to corrupt registry entries under **HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList** or invalid files in the **\\Users** directory. + +Note: If a previous upgrade did not complete, invalid profiles might exist in the **Windows.old\\Users** directory. + +To repair this error, ensure that deleted accounts are not still present in the Windows registry and that files under the \\Users directory are valid. Delete the invalid files or user profiles that are causing this error. The specific files and profiles that are causing the error will be recorded in the Windows setup log files. + +
+
+ + +
Code +
+ +8007001F - 0x4000D + +
+ +
+
Cause +
+ +General failure, a device attached to the system is not functioning. + +
+
+ + +
Mitigation +
+ +[Analyze log files](log-files.md#analyze-log-files) in order to determine the device that is not functioning properly. Disconnect, update, or replace the device. + +
+
+ + +
Code +
+ +8007042B - 0x4001E + +
+ +
+
Cause +
+ +The installation failed during the second boot phase while attempting the PRE_OOBE operation. + +
+
+ + +
Mitigation +
+ +This error has more than one possible cause. Attempt [quick fixes](quick-fixes.md), and if not successful, [analyze log files](log-files.md#analyze-log-files) in order to determine the problem and solution. + +
+
+ + +## Other result codes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error code +Cause +Mitigation +
0xC1800118WSUS has downloaded content that it cannot use due to a missing decryption key.See [Steps to resolve error 0xC1800118](https://blogs.technet.microsoft.com/wsus/2016/09/21/resolving-error-0xc1800118/) for information.
0xC1900200Setup.exe has detected that the machine does not meet the minimum system requirements.Ensure the system you are trying to upgrade meets the minimum system requirements.
See [Windows 10 specifications](https://www.microsoft.com/en-us/windows/windows-10-specifications) for information.
0x80090011A device driver error occurred during user data migration.Contact your hardware vendor and get all the device drivers updated. It is recommended to have an active internet connection during upgrade process. +
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
0xC7700112Failure to complete writing data to the system drive, possibly due to write access failure on the hard disk.This issue is resolved in the latest version of Upgrade Assistant. +
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
0x80190001An unexpected error was encountered while attempting to download files required for upgrade.To resolve this issue, download and run the media creation tool. See [Download windows 10](https://www.microsoft.com/en-us/software-download/windows10). +
0x80246007The update was not downloaded successfully.Attempt other methods of upgrading the operating system.
+Download and run the media creation tool. See [Download windows 10](https://www.microsoft.com/en-us/software-download/windows10). +
Attempt to upgrade using .ISO or USB.
+**Note**: Windows 10 Enterprise isn’t available in the media creation tool. For more information, go to the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). +
0xC1900201The system did not pass the minimum requirements to install the update.Contact the hardware vendor to get the latest updates.
0x80240017The upgrade is unavailable for this edition of Windows.Administrative policies enforced by your organization might be preventing the upgrade. Contact your IT administrator.
0x80070020The existing process cannot access the file because it is being used by another process.Use the MSCONFIG tool to perform a clean boot on the machine and then try to perform the update again. For more information, see [How to perform a clean boot in Windows](https://support.microsoft.com/en-us/kb/929135).
0x80070522The user doesn’t have required privilege or credentials to upgrade.Ensure that you have signed in as a local administrator or have local administrator privileges.
0xC1900107A cleanup operation from a previous installation attempt is still pending and a system reboot is required in order to continue the upgrade. +Reboot the device and run setup again. If restarting device does not resolve the issue, then use the Disk Cleanup utility and cleanup the temporary as well as the System files. For more information, see [Disk cleanup in Windows 10](https://support.microsoft.com/en-us/instantanswers/8fef4121-711b-4be1-996f-99e02c7301c2/disk-cleanup-in-windows-10).
0xC1900209The user has chosen to cancel because the system does not pass the compatibility scan to install the update. Setup.exe will report this error when it can upgrade the machine with user data but cannot migrate installed applications.Incompatible software is blocking the upgrade process. Uninstall the application and try the upgrade again. See [Windows 10 Pre-Upgrade Validation using SETUP.EXE](https://blogs.technet.microsoft.com/mniehaus/2015/08/23/windows-10-pre-upgrade-validation-using-setup-exe/) for more information. + +
You can also download the [Windows Assessment and Deployment Kit (ADK) for Windows 10](http://go.microsoft.com/fwlink/p/?LinkId=526740) and install Application Compatibility Tools. +
0x8007002 This error is specific to upgrades using System Center Configuration Manager 2012 R2 SP1 CU3 (5.00.8238.1403)Analyze the SMSTS.log and verify that the upgrade is failing on "Apply Operating system" Phase: Error 80072efe DownloadFileWithRanges() failed. 80072efe. ApplyOperatingSystem (0x0760) + +
The error 80072efe means that the connection with the server was terminated abnormally. + +
To resolve this issue, try the OS Deployment test on a client in same VLAN as the Configuration Manager server. Check the network configuration for random client-server connection issues happening on the remote VLAN. +
0x80240FFF Occurs when update synchronization fails. It can occur when you are using Windows Server Update Services on its own or when it is integrated with System Center Configuration Manager. If you enable update synchronization before you install hotfix 3095113, WSUS doesn't recognize the Upgrades classification and instead treats the upgrade like a regular update. You can prevent this by installing hotfix 3095113 before you enable update synchronization. However, if you have already run into this problem, do the following: + +
    +
  1. Disable the Upgrades classification.
  2. +
  3. Install hotfix 3095113.
  4. +
  5. Delete previously synched updates.
  6. +
  7. Enable the Upgrades classification.
  8. +
  9. Perform a full synch.
  10. +
+
For detailed information on how to run these steps check out How to delete upgrades in WSUS.

+
0x8007007EOccurs when update synchronization fails because you do not have hotfix 3095113 installed before you enable update synchronization. Specifically, the CopyToCache operation fails on clients that have already downloaded the upgrade because Windows Server Update Services has bad metadata related to the upgrade. It can occur when you are using standalone Windows Server Update Services or when WSUS is integrated with System Center Configuration Manager. Use the following steps to repair Windows Server Update Services. You must run these steps on each WSUS server that synched metadata before you installed the hotfix. + +
    +
  1. Stop the Windows Update service. Sign in as a user with administrative privileges, and then do the following: +
      +
    1. Open Administrative Tools from the Control Panel.
    2. +
    3. Double-click Services.
    4. +
    5. Find the Windows Update service, right-click it, and then click Stop. If prompted, enter your credentials.
    6. +
    +
  2. +
  3. Delete all files and folders under c:\Windows\SoftwareDistribution\DataStore.
  4. +
  5. Restart the Windows Update service.
  6. +
+
+ +## Other error codes + + + + + + + + + + + + + + + +
Error CodesCauseMitigation
0x80070003- 0x20007 +This is a failure during SafeOS phase driver installation. + +[Verify device drivers](https://msdn.microsoft.com/windows/hardware/drivers/install/troubleshooting-device-and-driver-installations) on the computer, and [analyze log files](log-files.md#analyze-log-files) to determine the problem driver. +
0x8007025D - 0x2000C +This error occurs if the ISO file's metadata is corrupt."Re-download the ISO/Media and re-attempt the upgrade. + +Alternatively, re-create installation media the [Media Creation Tool](https://www.microsoft.com/en-us/software-download/windows10). + +
0x80070490 - 0x20007An incompatible device driver is present. + +[Verify device drivers](https://msdn.microsoft.com/windows/hardware/drivers/install/troubleshooting-device-and-driver-installations) on the computer, and [analyze log files](log-files.md#analyze-log-files) to determine the problem driver. + +
0xC1900101 - 0x2000c +An unspecified error occurred in the SafeOS phase during WIM apply. This can be caused by an outdated driver or disk corruption. +Run checkdisk to repair the file system. For more information, see the [quick fixes](quick-fixes.md) section in this guide. +
Update drivers on the computer, and select "Download and install updates (recommended)" during the upgrade process. Disconnect devices other than the mouse, keyboard and display.
0xC1900200 - 0x20008 + +The computer doesn’t meet the minimum requirements to download or upgrade to Windows 10. + +See [Windows 10 Specifications](https://www.microsoft.com/en-us/windows/windows-10-specifications) and verify the computer meets minimum requirements. + +
Review logs for [compatibility information](https://blogs.technet.microsoft.com/askcore/2016/01/21/using-the-windows-10-compatibility-reports-to-understand-upgrade-issues/).
0x80070004 - 0x3000D +This is a problem with data migration during the first boot phase. There are multiple possible causes. + +[Analyze log files](log-files.md#analyze-log-files) to determine the issue.
0xC1900101 - 0x4001E +Installation failed in the SECOND_BOOT phase with an error during PRE_OOBE operation. +This is a generic error that occurs during the OOBE phase of setup. See the [0xC1900101](#0xc1900101) section of this guide and review general troubleshooting procedures described in that section.
0x80070005 - 0x4000D +The installation failed in the SECOND_BOOT phase with an error in during MIGRATE_DATA operation. This error indicates that access was denied while attempting to migrate data. +[Analyze log files](log-files.md#analyze-log-files) to determine the data point that is reporting access denied.
0x80070004 - 0x50012 +Windows Setup failed to open a file. +[Analyze log files](log-files.md#analyze-log-files) to determine the data point that is reporting access problems.
0xC190020e +
0x80070070 - 0x50011 +
0x80070070 - 0x50012 +
0x80070070 - 0x60000 +
These errors indicate the computer does not have enough free space available to install the upgrade. +To upgrade a computer to Windows 10, it requires 16 GB of free hard drive space for a 32-bit OS, and 20 GB for a 64-bit OS. If there is not enough space, attempt to [free up drive space](https://support.microsoft.com/en-us/help/17421/windows-free-up-drive-space) before proceeding with the upgrade. + +
Note: If your device allows it, you can use an external USB drive for the upgrade process. Windows setup will back up the previous version of Windows to a USB external drive. The external drive must be at least 8GB (16GB is recommended). The external drive should be formatted using NTFS. Drives that are formatted in FAT32 may run into errors due to FAT32 file size limitations. USB drives are preferred over SD cards because drivers for SD cards are not migrated if the device does not support Connected Standby. +
+ +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) diff --git a/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md b/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md index 65997cec49..347b42dee1 100644 --- a/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md +++ b/windows/deployment/upgrade/resolve-windows-10-upgrade-errors.md @@ -18,1078 +18,37 @@ ms.localizationpriority: high >**Important**: This topic contains technical instructions for IT administrators. If you are not an IT administrator, see the following topic: [Get help with Windows 10 upgrade and installation errors](https://support.microsoft.com/en-us/help/10587/windows-10-get-help-with-upgrade-installation-errors). You can also [Submit Windows 10 upgrade errors using Feedback Hub](submit-errors.md). -## In this topic - -This topic contains a brief introduction to Windows 10 installation processes, and provides resolution procedures that IT administrators can use to resolve issues with Windows 10 upgrade. The following sections and procedures are provided in this guide: - -- [SetupDiag](#setupdiag): SetupDiag is a new tool to help you isolate the root cause of an upgrade failure. -- [Troubleshooting upgrade errors](#troubleshooting-upgrade-errors): General advice and techniques for troubleshooting Windows 10 upgrade errors.
-- [The Windows 10 upgrade process](#the-windows-10-upgrade-process): An explanation of phases used during the upgrade process.
-- [Quick fixes](#quick-fixes): Steps you can take to eliminate many Windows upgrade errors.
-- [Upgrade error codes](#upgrade-error-codes): The components of an error code are explained. - - [Result codes](#result-codes): Information about result codes. - - [Extend codes](#extend-codes): Information about extend codes. -- [Windows Error Reporting](#windows-error-reporting): How to use Event Viewer to review details about a Windows 10 upgrade. -- [Log files](#log-files): A list and description of log files useful for troubleshooting. - - [Log entry structure](#log-entry-structure): The format of a log entry is described. - - [Analyze log files](#analyze-log-files): General procedures for log file analysis, and an example. -- [Resolution procedures](#resolution-procedures): Causes and mitigation procedures associated with specific error codes. - - [0xC1900101](#0xc1900101): Information about the 0xC1900101 result code. - - [0x800xxxxx](#0x800xxxxx): Information about result codes that start with 0x800. - - [Other result codes](#other-result-codes): Additional causes and mitigation procedures are provided for some result codes. - - [Other error codes](#other-error-codes): Additional causes and mitigation procedures are provided for some error codes. - -## SetupDiag - -You can use the SetupDiag.exe tool to automatically analyze log files and determine the root cause of an upgrade failure. If SetupDiag is successful in diagnosing the problem, an error code is displayed. Given this error code, use the procedures here (in this topic) to determine how to repair the upgrade failure. For more information see [SetupDiag](setupdiag.md). - -## Troubleshooting upgrade errors - -If a Windows 10 upgrade is not successful, it can be very helpful to understand *when* an error occurred in the upgrade process. - -Briefly, the upgrade process consists of four phases: **Downlevel**, **SafeOS**, **First boot**, and **Second boot**. The computer will reboot once between each phase. - -These phases are explained in greater detail [below](#the-windows-10-upgrade-process). First, let's summarize the actions performed during each phase because this affects the type of errors that can be encountered. - -1. **Downlevel phase**: Because this phase runs on the source OS, upgrade errors are not typically seen. If you do encounter an error, ensure the source OS is stable. Also ensure the Windows setup source and the destination drive are accessible. - -2. **SafeOS phase**: Errors most commonly occur during this phase due to hardware issues, firmware issues, or non-microsoft disk encryption software. - - Since the computer is booted into Windows PE during the SafeOS phase, a useful troubleshooting technique is to boot into [Windows PE](https://docs.microsoft.com/windows-hardware/manufacture/desktop/winpe-intro) using installation media. You can use the [media creation tool](https://www.microsoft.com/software-download/windows10) to create bootable media, or you can use tools such as the [Windows ADK](https://developer.microsoft.com/windows/hardware/windows-assessment-deployment-kit), and then boot your device from this media to test for hardware and firmware compatibility issues. - - **Do not proceed with the Windows 10 installation after booting from this media**. This method can only be used to perform a clean install which will not migrate any of your apps and settings, and you will be required re-enter your Windows 10 license information. - - If the computer does not successfully boot into Windows PE using the media that you created, this is likely due to a hardware or firmware issue. Check with your hardware manufacturer and apply any recommended BIOS and firmware updates. If you are still unable to boot to installation media after applying updates, disconnect or replace legacy hardware. - - If the computer successfully boots into Windows PE, but you are not able to browse the system drive on the computer, it is possible that non-Microsoft disk encryption software is blocking your ability to perform a Windows 10 upgrade. Update or temporarily remove the disk encryption. - -3. **First boot phase**: Boot failures in this phase are relatively rare, and almost exclusively caused by device drivers. Disconnect all peripheral devices except for the mouse, keyboard, and display. Obtain and install updated device drivers, then retry the upgrade. - -4. **Second boot phase**: In this phase, the system is running under the target OS with new drivers. Boot failures are most commonly due to anti-virus software or filter drivers. Disconnect all peripheral devices except for the mouse, keyboard, and display. Obtain and install updated device drivers, temporarily uninstall anti-virus software, then retry the upgrade. - -If the general troubleshooting techniques described above or the [quick fixes](#quick-fixes) detailed below do not resolve your issue, you can attempt to analyze [log files](#log-files) and interpret [upgrade error codes](#upgrade-error-codes). You can also [Submit Windows 10 upgrade errors using Feedback Hub](submit-errors.md) so that Microsoft can diagnose your issue. - -## The Windows 10 upgrade process - -The **Windows Setup** application is used to upgrade a computer to Windows 10, or to perform a clean installation. Windows Setup starts and restarts the computer, gathers information, copies files, and creates or adjusts configuration settings. - -When performing an operating system upgrade, Windows Setup uses phases described below. A reboot occurs between each of the phases. After the first reboot, the user interface will remain the same until the upgrade is completed. Percent progress is displayed and will advance as you move through each phase, reaching 100% at the end of the second boot phase. - -1. **Downlevel phase**: The downlevel phase is run within the previous operating system. Windows files are copied and installation components are gathered. - - ![downlevel phase](../images/downlevel.png) - -2. **Safe OS phase**: A recovery partition is configured, Windows files are expanded, and updates are installed. An OS rollback is prepared if needed. Example error codes: 0x2000C, 0x20017. - - ![safeOS phase](../images/safeos.png) - -3. **First boot phase**: Initial settings are applied. Example error codes: 0x30018, 0x3000D. - - ![first boot phase](../images/firstboot.png) - -4. **Second boot phase**: Final settings are applied. This is also called the **OOBE boot phase**. Example error codes: 0x4000D, 0x40017. - - At the end of the second boot phase, the **Welcome to Windows 10** screen is displayed, preferences are configured, and the Windows 10 sign-in prompt is displayed. - - ![second boot phase](../images/secondboot.png) - - ![second boot phase](../images/secondboot2.png) - - ![second boot phase](../images/secondboot3.png) - -5. **Uninstall phase**: This phase occurs if upgrade is unsuccessful (image not shown). Example error codes: 0x50000, 0x50015. - -**Figure 1**: Phases of a successful Windows 10 upgrade (uninstall is not shown): - -![Upgrade process](../images/upgrade-process.png) - -DU = Driver/device updates.
-OOBE = Out of box experience.
-WIM = Windows image (Microsoft) - - -## Quick fixes - -The following steps can resolve many Windows upgrade problems. - -
    -
  1. Remove nonessential external hardware, such as docks and USB devices.
  2. -
  3. Check all hard drives for errors and attempt repairs. To automatically repair hard drives, open an elevated command prompt, switch to the drive you wish to repair, and type the following command. You will be required to reboot the computer if the hard drive being repaired is also the system drive. -
      -
    • chkdsk /F
    • -
    -
  4. -
  5. Attempt to restore and repair system files by typing the following commands at an elevated command prompt. It may take several minutes for the command operations to be completed. For more information, see [Repair a Windows Image](https://msdn.microsoft.com/windows/hardware/commercialize/manufacture/desktop/repair-a-windows-image). -
      -
    • DISM.exe /Online /Cleanup-image /Restorehealth
    • -
    • sfc /scannow
    • -
    -
  6. -
  7. Update Windows so that all available recommended updates are installed, and ensure the computer is rebooted if this is necessary to complete installation of an update.
  8. -
  9. Uninstall non-Microsoft antivirus software. -
      -
    • Use Windows Defender for protection during the upgrade. -
    • Verify compatibility information and re-install antivirus applications after the upgrade.
    • -
    -
  10. Uninstall all nonessential software.
  11. -
  12. Update firmware and drivers.
  13. -
  14. Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
  15. -
  16. Verify at least 16 GB of free space is available to upgrade a 32-bit OS, or 20 GB for a 64-bit OS. -
- - -## Upgrade error codes - -If the upgrade process is not successful, Windows Setup will return two codes: - -1. **A result code**: The result code corresponds to a specific Win32 or NTSTATUS error. -2. **An extend code**: The extend code contains information about both the *phase* in which an error occurred, and the *operation* that was being performed when the error occurred. - ->For example, a result code of **0xC1900101** with an extend code of **0x4000D** will be returned as: **0xC1900101 - 0x4000D**. - -Note: If only a result code is returned, this can be because a tool is being used that was not able to capture the extend code. For example, if you are using the [Windows 10 Upgrade Assistant](https://support.microsoft.com/en-us/kb/3159635) then only a result code might be returned. - ->[!TIP] ->If you are unable to locate the result and extend error codes, you can attempt to find these codes using Event Viewer. For more information, see [Windows Error Reporting](#windows-error-reporting). - -### Result codes - ->A result code of **0xC1900101** is generic and indicates that a rollback occurred. In most cases, the cause is a driver compatibility issue.
To troubleshoot a failed upgrade that has returned a result code of 0xC1900101, analyze the extend code to determine the Windows Setup phase, and see the [Resolution procedures](#resolution-procedures) section later in this topic. - -Result codes can be matched to the type of error encountered. To match a result code to an error: - -1. Identify the error code type as either Win32 or NTSTATUS using the first hexadecimal digit: -
**8** = Win32 error code (ex: 0x**8**0070070) -
**C** = NTSTATUS value (ex: 0x**C**1900107) -2. Write down the last 4 digits of the error code (ex: 0x8007**0070** = 0070). These digits are the actual error code type as defined in the [HRESULT](https://msdn.microsoft.com/en-us/library/cc231198.aspx) or the [NTSTATUS](https://msdn.microsoft.com/en-us/library/cc231200.aspx) structure. Other digits in the code identify things such as the device type that produced the error. -3. Based on the type of error code determined in the first step (Win32 or NTSTATUS), match the 4 digits derived from the second step to either a Win32 error code or NTSTATUS value using the following links: - - [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) - - [NTSTATUS value](https://msdn.microsoft.com/en-us/library/cc704588.aspx) - -Examples: -- 0x80070070 - - Based on the "8" this is a Win32 error code - - The last four digits are 0070, so look up 0x00000070 in the [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) table - - The error is: **ERROR_DISK_FULL** -- 0xC1900107 - - Based on the "C" this is an NTSTATUS error code - - The last four digits are 0107, so look up 0x00000107 in the [NTSTATUS value](https://msdn.microsoft.com/en-us/library/cc704588.aspx) table - - The error is: **STATUS_SOME_NOT_MAPPED** - -Some result codes are self-explanatory, whereas others are more generic and require further analysis. In the examples shown above, ERROR_DISK_FULL indicates that the hard drive is full and additional room is needed to complete Windows upgrade. The message STATUS_SOME_NOT_MAPPED is more ambiguous, and means that an action is pending. In this case, the action pending is often the cleanup operation from a previous installation attempt, which can be resolved with a system reboot. - -### Extend codes - ->**Important**: Extend codes reflect the current Windows 10 upgrade process, and might change in future releases of Windows 10. The codes discussed in this section apply to Windows 10 version 1607, also known as the Anniversary Update. - -Extend codes can be matched to the phase and operation when an error occurred. To match an extend code to the phase and operation: - -1. Use the first digit to identify the phase (ex: 0x4000D = 4). -2. Use the last two digits to identify the operation (ex: 0x4000D = 0D). -3. Match the phase and operation to values in the tables provided below. - -The following tables provide the corresponding phase and operation for values of an extend code: - -
- - - -
Extend code: phase
HexPhase -
0SP_EXECUTION_UNKNOWN -
1SP_EXECUTION_DOWNLEVEL -
2SP_EXECUTION_SAFE_OS -
3SP_EXECUTION_FIRST_BOOT -
4SP_EXECUTION_OOBE_BOOT -
5SP_EXECUTION_UNINSTALL -
- - - - - - - -
Extend code: operation
- -
HexOperation -
0SP_EXECUTION_OP_UNKNOWN -
1SP_EXECUTION_OP_COPY_PAYLOAD -
2SP_EXECUTION_OP_DOWNLOAD_UPDATES -
3SP_EXECUTION_OP_INSTALL_UPDATES -
4SP_EXECUTION_OP_INSTALL_RECOVERY_ENVIRONMENT -
5SP_EXECUTION_OP_INSTALL_RECOVERY_IMAGE -
6SP_EXECUTION_OP_REPLICATE_OC -
7SP_EXECUTION_OP_INSTALL_DRVIERS -
8SP_EXECUTION_OP_PREPARE_SAFE_OS -
9SP_EXECUTION_OP_PREPARE_ROLLBACK -
ASP_EXECUTION_OP_PREPARE_FIRST_BOOT -
BSP_EXECUTION_OP_PREPARE_OOBE_BOOT -
CSP_EXECUTION_OP_APPLY_IMAGE -
DSP_EXECUTION_OP_MIGRATE_DATA -
ESP_EXECUTION_OP_SET_PRODUCT_KEY -
FSP_EXECUTION_OP_ADD_UNATTEND -
-
- -
HexOperation -
10SP_EXECUTION_OP_ADD_DRIVER -
11SP_EXECUTION_OP_ENABLE_FEATURE -
12SP_EXECUTION_OP_DISABLE_FEATURE -
13SP_EXECUTION_OP_REGISTER_ASYNC_PROCESS -
14SP_EXECUTION_OP_REGISTER_SYNC_PROCESS -
15SP_EXECUTION_OP_CREATE_FILE -
16SP_EXECUTION_OP_CREATE_REGISTRY -
17SP_EXECUTION_OP_BOOT -
18SP_EXECUTION_OP_SYSPREP -
19SP_EXECUTION_OP_OOBE -
1ASP_EXECUTION_OP_BEGIN_FIRST_BOOT -
1BSP_EXECUTION_OP_END_FIRST_BOOT -
1CSP_EXECUTION_OP_BEGIN_OOBE_BOOT -
1DSP_EXECUTION_OP_END_OOBE_BOOT -
1ESP_EXECUTION_OP_PRE_OOBE -
1FSP_EXECUTION_OP_POST_OOBE -
20SP_EXECUTION_OP_ADD_PROVISIONING_PACKAGE -
-
- -For example: An extend code of **0x4000D**, represents a problem during phase 4 (**0x4**) with data migration (**000D**). - -## Windows Error Reporting - -When Windows Setup fails, the result and extend code are recorded as an informational event in the Application log by Windows Error Reporting as event 1001. The event name is **WinSetupDiag02**. You can use Event Viewer to review this event, or you can use Windows PowerShell. - -To use Windows PowerShell, type the following commands from an elevated Windows PowerShell prompt: - -``` -$events = Get-WinEvent -FilterHashtable @{LogName="Application";ID="1001";Data="WinSetupDiag02"} -$event = [xml]$events[0].ToXml() -$event.Event.EventData.Data -``` - -To use Event Viewer: -1. Open Event Viewer and navigate to **Windows Logs\Application**. -2. Click **Find**, and then search for **winsetupdiag02**. -3. Double-click the event that is highlighted. - -Note: For legacy operating systems, the Event Name was WinSetupDiag01. - -Ten parameters are listed in the event: -
- - - - - - - - - - - -
P1: The Setup Scenario (1=Media,5=WindowsUpdate,7=Media Creation Tool)
P2: Setup Mode (x=default,1=Downlevel,5=Rollback)
P3: New OS Architecture (x=default,0=X86,9=AMD64)
P4: Install Result (x=default,0=Success,1=Failure,2=Cancel,3=Blocked)
P5: Result Error Code (Ex: 0xc1900101)
P6: Extend Error Code (Ex: 0x20017)
P7: Source OS build (Ex: 9600)
P8: Source OS branch (not typically available)
P9: New OS build (Ex: 16299}
P10: New OS branch (Ex: rs3_release}
- -The event will also contain links to log files that can be used to perform a detailed diagnosis of the error. An example of this event from a successful upgrade is shown below. - -![Windows Error Reporting](../images/event.png) - -## Log files - -Several log files are created during each phase of the upgrade process. These log files are essential for troubleshooting upgrade problems. By default, the folders that contain these log files are hidden on the upgrade target computer. To view the log files, configure Windows Explorer to view hidden items, or use a tool to automatically gather these logs. The most useful log is **setupact.log**. The log files are located in a different folder depending on the Windows Setup phase. Recall that you can determine the phase from the extend code. - -Note: Also see the [Windows Error Reporting](#windows-error-reporting) section in this document for help locating error codes and log files. - -The following table describes some log files and how to use them for troubleshooting purposes:
- -
- - - - - - - - - - - - - - - - -
Log filePhase: LocationDescriptionWhen to use
setupact.logDown-Level:
$Windows.~BT\Sources\Panther
Contains information about setup actions during the downlevel phase. All down-level failures and starting point for rollback investigations.
This is the most important log for diagnosing setup issues.
OOBE:
$Windows.~BT\Sources\Panther\UnattendGC
Contains information about actions during the OOBE phase.Investigating rollbacks that failed during OOBE phase and operations – 0x4001C, 0x4001D, 0x4001E, 0x4001F.
Rollback:
$Windows.~BT\Sources\Rollback
Contains information about actions during rollback.Investigating generic rollbacks - 0xC1900101.
Pre-initialization (prior to downlevel):
Windows
Contains information about initializing setup.If setup fails to launch.
Post-upgrade (after OOBE):
Windows\Panther
Contains information about setup actions during the installation.Investigate post-upgrade related issues.
setuperr.logSame as setupact.logContains information about setup errors during the installation.Review all errors encountered during the installation phase.
miglog.xmlPost-upgrade (after OOBE):
Windows\Panther
Contains information about what was migrated during the installation.Identify post upgrade data migration issues.
BlueBox.logDown-Level:
Windows\Logs\Mosetup
Contains information communication between setup.exe and Windows Update.Use during WSUS and WU down-level failures or for 0xC1900107.
Supplemental rollback logs:
-Setupmem.dmp
-setupapi.dev.log
-Event logs (*.evtx)
$Windows.~BT\Sources\RollbackAdditional logs collected during rollback. -Setupmem.dmp: If OS bugchecks during upgrade, setup will attempt to extract a mini-dump.
-Setupapi: Device install issues - 0x30018
-Event logs: Generic rollbacks (0xC1900101) or unexpected reboots.
- -### Log entry structure - -A setupact.log or setuperr.log entry includes the following elements: - -
    -
  1. The date and time - 2016-09-08 09:20:05. -
  2. The log level - Info, Warning, Error, Fatal Error. -
  3. The logging component - CONX, MOUPG, PANTHR, SP, IBSLIB, MIG, DISM, CSI, CBS. -
      -
    • The logging components SP (setup platform), MIG (migration engine), and CONX (compatibility information) are particularly useful for troubleshooting Windows Setup errors. -
    -
  4. The message - Operation completed successfully. -
- -See the following example: - -| Date/Time | Log level | Component | Message | -|------|------------|------------|------------| -|2016-09-08 09:23:50,| Warning | MIG | Could not replace object C:\Users\name\Cookies. Target Object cannot be removed.| - - -### Analyze log files - ->The following instructions are meant for IT professionals. Also see the [Upgrade error codes](#upgrade-error-codes) section in this guide to familiarize yourself with [result codes](#result-codes) and [extend codes](#extend-codes). - -
To analyze Windows Setup log files: - -
    -
  1. Determine the Windows Setup error code. This code should be returned by Windows Setup if it is not successful with the upgrade process. -
  2. Based on the [extend code](#extend-codes) portion of the error code, determine the type and location of a [log files](#log-files) to investigate. -
  3. Open the log file in a text editor, such as notepad. -
  4. Using the [result code](#result-codes) portion of the Windows Setup error code, search for the result code in the file and find the last occurrence of the code. Alternatively search for the "abort" and abandoning" text strings described in step 7 below. -
  5. To find the last occurrence of the result code: -
      -
    1. Scroll to the bottom of the file and click after the last character. -
    2. Click Edit. -
    3. Click Find. -
    4. Type the result code. -
    5. Under Direction select Up. -
    6. Click Find Next. -
    -
  6. When you have located the last occurrence of the result code, scroll up a few lines from this location in the file and review the processes that failed just prior to generating the result code. -
  7. Search for the following important text strings: -
      -
    • Shell application requested abort -
    • Abandoning apply due to error for object -
    -
  8. Decode Win32 errors that appear in this section. -
  9. Write down the timestamp for the observed errors in this section. -
  10. Search other log files for additional information matching these timestamps or errors. -
- -For example, assume that the error code for an error is 0x8007042B - 0x2000D. Searching for "8007042B" reveals the following content from the setuperr.log file: - ->Some lines in the text below are shortened to enhance readability. The date and time at the start of each line (ex: 2016-10-05 15:27:08) is shortened to minutes and seconds, and the certificate file name which is a long text string is shortened to just "CN." - -
setuperr.log content: - -
-27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
-27:08, Error           MIG    Error 1392 while gathering object C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Shell application requested abort![gle=0x00000570]
-27:08, Error                  Gather failed. Last error: 0x00000000
-27:08, Error           SP     SPDoFrameworkGather: Gather operation failed. Error: 0x0000002C
-27:09, Error           SP     CMigrateFramework: Gather framework failed. Status: 44
-27:09, Error           SP     Operation failed: Migrate framework (Full). Error: 0x8007042B[gle=0x000000b7]
-27:09, Error           SP     Operation execution failed: 13. hr = 0x8007042B[gle=0x000000b7]
-27:09, Error           SP     CSetupPlatformPrivate::Execute: Execution of operations queue failed, abandoning. Error: 0x8007042B[gle=0x000000b7]
-
- -The first line indicates there was an error **0x00000570** with the file **C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]** (shown below): - -
-27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
-
- -The error 0x00000570 is a [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) corresponding to: ERROR_FILE_CORRUPT: The file or directory is corrupted and unreadable. - -Therefore, Windows Setup failed because it was not able to migrate the corrupt file **C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\[CN]**. This file is a local system certificate and can be safely deleted. Searching the setupact.log file for additional details, the phrase "Shell application requested abort" is found in a location with the same timestamp as the lines in setuperr.log. This confirms our suspicion that this file is the cause of the upgrade failure: - -
setupact.log content: - -
-27:00, Info                   Gather started at 10/5/2016 23:27:00
-27:00, Info [0x080489] MIG    Setting system object filter context (System)
-27:00, Info [0x0803e5] MIG    Not unmapping HKCU\Software\Classes; it is not mapped
-27:00, Info [0x0803e5] MIG    Not unmapping HKCU; it is not mapped
-27:00, Info            SP     ExecuteProgress: Elapsed events:1 of 4, Percent: 12
-27:00, Info [0x0802c6] MIG    Processing GATHER for migration unit: \UpgradeFramework (CMXEAgent)
-27:08, Error           SP     Error READ, 0x00000570 while gathering/applying object: File, C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Will return 0[gle=0x00000570]
-27:08, Error           MIG    Error 1392 while gathering object C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 [CN]. Shell application requested abort![gle=0x00000570]
-27:08, Info            SP     ExecuteProgress: Elapsed events:2 of 4, Percent: 25
-27:08, Info            SP     ExecuteProgress: Elapsed events:3 of 4, Percent: 37
-27:08, Info [0x080489] MIG    Setting system object filter context (System)
-27:08, Info [0x0803e5] MIG    Not unmapping HKCU\Software\Classes; it is not mapped
-27:08, Info [0x0803e5] MIG    Not unmapping HKCU; it is not mapped
-27:08, Info            MIG    COutOfProcPluginFactory::FreeSurrogateHost: Shutdown in progress.
-27:08, Info            MIG    COutOfProcPluginFactory::LaunchSurrogateHost::CommandLine: -shortened-
-27:08, Info            MIG    COutOfProcPluginFactory::LaunchSurrogateHost: Successfully launched host and got control object.
-27:08, Error                  Gather failed. Last error: 0x00000000
-27:08, Info                   Gather ended at 10/5/2016 23:27:08 with result 44
-27:08, Info                   Leaving MigGather method
-27:08, Error           SP     SPDoFrameworkGather: Gather operation failed. Error: 0x0000002C
-
- - -
This analysis indicates that the Windows upgrade error can be resolved by deleting the C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\[CN] file. Note: In this example, the full, unshortened file name is C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\be8228fb2d3cb6c6b0ccd9ad51b320b4_a43d512c-69f2-42de-aef9-7a88fabdaa3f. - -## Resolution procedures - -### 0xC1900101 - -A frequently observed result code is 0xC1900101. This result code can be thrown at any stage of the upgrade process, with the exception of the downlevel phase. 0xC1900101 is a generic rollback code, and usually indicates that an incompatible driver is present. The incompatible driver can cause blue screens, system hangs, and unexpected reboots. Analysis of supplemental log files is often helpful, such as:
- -- The minidump file: $Windows.~bt\Sources\Rollback\setupmem.dmp, -- Event logs: $Windows.~bt\Sources\Rollback\*.evtx -- The device install log: $Windows.~bt\Sources\Rollback\setupapi\setupapi.dev.log - -The device install log is particularly helpful if rollback occurs during the sysprep operation (extend code 0x30018). To resolve a rollback due to driver conflicts, try running setup using a minimal set of drivers and startup programs by performing a [clean boot](https://support.microsoft.com/en-us/kb/929135) before initiating the upgrade process. - -
See the following general troubleshooting procedures associated with a result code of 0xC1900101: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
Code -
0xC1900101 - 0x20004 -
- -
-
Cause -
Windows Setup encountered an error during the SAFE_OS with the INSTALL_RECOVERY_ENVIRONMENT operation -
This is generally caused by out-of-date drivers. -
-
- - -
Mitigation -
Uninstall antivirus applications. -
Remove all unused SATA devices. -
Remove all unused devices and drivers. -
Update drivers and BIOS. -
-
- - -
Code -
0xC1900101 - 0x2000c -
- -
-
Cause -
Windows Setup encountered an unspecified error during Wim apply in the WinPE phase. -
This is generally caused by out-of-date drivers. -
-
- - -
Mitigation -
Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. -
Contact your hardware vendor to obtain updated device drivers. -
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process. -
-
- - -
Code -
0xC1900101 - 0x20017 - -
- -
-
Cause -
A driver has caused an illegal operation. -
Windows was not able to migrate the driver, resulting in a rollback of the operating system. -
This is a SafeOS boot failure, typically caused by drivers or non-Microsoft disk encryption software. -
-
- - -
Mitigation -
-Ensure that all that drivers are updated.
-Open the Setuperr.log and Setupact.log files in the %windir%\Panther directory, and then locate the problem drivers. -
For more information, see [Understanding Failures and Log Files](https://technet.microsoft.com/en-us/library/ee851579.aspx). -
Update or uninstall the problem drivers. -
-
- - -
Code -
0xC1900101 - 0x30018 -
- -
-
Cause -
A device driver has stopped responding to setup.exe during the upgrade process. -
-
- - -
Mitigation -
-Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. -
Contact your hardware vendor to obtain updated device drivers. -
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process. -
-
- - -
Code -
0xC1900101 - 0x3000D -
- -
-
Cause -
Installation failed during the FIRST_BOOT phase while attempting the MIGRATE_DATA operation. -
This can occur due to a problem with a display driver. - -
-
- - -
Mitigation -
-Disconnect all peripheral devices that are connected to the system, except for the mouse, keyboard and display. -
Update or uninstall the display driver. -
-
- - -
Code -
0xC1900101 - 0x4000D -
- -
-
Cause -
A rollback occurred due to a driver configuration issue. -
Installation failed during the second boot phase while attempting the MIGRATE_DATA operation. - -
This can occur due to incompatible drivers. - -
-
- - -
Mitigation -
-
Check supplemental rollback logs for a setupmem.dmp file, or event logs for any unexpected reboots or errors. -
Review the rollback log and determine the stop code. -
The rollback log is located in the **C:\$Windows.~BT\Sources\Panther** folder. An example analysis is shown below. This example is not representative of all cases: -
Info SP Crash 0x0000007E detected -
Info SP Module name : -
Info SP Bugcheck parameter 1 : 0xFFFFFFFFC0000005 -
Info SP Bugcheck parameter 2 : 0xFFFFF8015BC0036A -
Info SP Bugcheck parameter 3 : 0xFFFFD000E5D23728 -
Info SP Bugcheck parameter 4 : 0xFFFFD000E5D22F40 -
Info SP Cannot recover the system. -
Info SP Rollback: Showing splash window with restoring text: Restoring your previous version of Windows. - - -
Typically, there is a dump file for the crash to analyze. If you are not equipped to debug the dump, then attempt the following basic troubleshooting procedures:
- -1. Make sure you have enough disk space.
-2. If a driver is identified in the bug check message, disable the driver or check with the manufacturer for driver updates.
-3. Try changing video adapters.
-4. Check with your hardware vendor for any BIOS updates.
-5. Disable BIOS memory options such as caching or shadowing. -

-
-
- - -
Code -
0xC1900101 - 0x40017 -
- -
-
Cause -
Windows 10 upgrade failed after the second reboot. -
This is usually caused by a faulty driver. For example: antivirus filter drivers or encryption drivers. -
-
- - -
Mitigation -
Clean boot into Windows, and then attempt the upgrade to Windows 10.
- -For more information, see [How to perform a clean boot in Windows](https://support.microsoft.com/en-us/kb/929135). - -

Ensure you select the option to "Download and install updates (recommended)." -
-
- -

0x800xxxxx

- -
Result codes starting with the digits 0x800 are also important to understand. These error codes indicate general operating system errors, and are not unique to the Windows upgrade process. Examples include timeouts, devices not functioning, and a process stopping unexpectedly. - -
See the following general troubleshooting procedures associated with a result code of 0x800xxxxx:
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
Code -
- -80040005 - 0x20007 - -
- -
-
Cause -
- -An unspecified error occurred with a driver during the SafeOS phase. - -
-
- - -
Mitigation -
- -This error has more than one possible cause. Attempt [quick fixes](#quick-fixes), and if not successful, [analyze log files](#analyze-log-files) in order to determine the problem and solution. - -
-
- - -
Code -
- -0x80073BC3 - 0x20009
-0x8007002 - 0x20009
-0x80073B92 - 0x20009 - -
- -
-
Cause -
- -The requested system device cannot be found, there is a sharing violation, or there are multiple devices matching the identification criteria. - -
-
- - -
Mitigation -
- -These errors occur during partition analysis and validation, and can be caused by the presence of multiple system partitions. For example, if you installed a new system drive but left the previous system drive connected, this can cause a conflict. To resolve the errors, disconnect or temporarily disable drives that contain the unused system partition. You can reconnect the drive after the upgrade has completed. Alternatively, you can delete the unused system partition. - -
-
- - -
Code -
- -800704B8 - 0x3001A - -
- -
-
Cause -
- -An extended error has occurred during the first boot phase. - -
-
- - -
Mitigation -
- -Disable or uninstall non-Microsoft antivirus applications, disconnect all unnecessary devices, and perform a [clean boot](https://support.microsoft.com/en-us/kb/929135). - -
-
- - -
Code -
- -8007042B - 0x4000D - -
- -
-
Cause -
- -The installation failed during the second boot phase while attempting the MIGRATE_DATA operation. -
This issue can occur due to file system, application, or driver issues. - -
-
- - -
Mitigation -
- -[Analyze log files](#analyze-log-files) in order to determine the file, application, or driver that is not able to be migrated. Disconnect, update, remove, or replace the device or object. - -
-
- - -
Code -
- -8007001F - 0x3000D - -
- -
-
Cause -
- -The installation failed in the FIRST_BOOT phase with an error during MIGRATE_DATA operation. - -
-
- - -
Mitigation -
- -[Analyze log files](#analyze-log-files) in order to determine the files or registry entries that are blocking data migration. - -This error can be due to a problem with user profiles. It can occur due to corrupt registry entries under **HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList** or invalid files in the **\\Users** directory. - -Note: If a previous upgrade did not complete, invalid profiles might exist in the **Windows.old\\Users** directory. - -To repair this error, ensure that deleted accounts are not still present in the Windows registry and that files under the \\Users directory are valid. Delete the invalid files or user profiles that are causing this error. The specific files and profiles that are causing the error will be recorded in the Windows setup log files. - -
-
- - -
Code -
- -8007001F - 0x4000D - -
- -
-
Cause -
- -General failure, a device attached to the system is not functioning. - -
-
- - -
Mitigation -
- -[Analyze log files](#analyze-log-files) in order to determine the device that is not functioning properly. Disconnect, update, or replace the device. - -
-
- - -
Code -
- -8007042B - 0x4001E - -
- -
-
Cause -
- -The installation failed during the second boot phase while attempting the PRE_OOBE operation. - -
-
- - -
Mitigation -
- -This error has more than one possible cause. Attempt [quick fixes](#quick-fixes), and if not successful, [analyze log files](#analyze-log-files) in order to determine the problem and solution. - -
-
- - -### Other result codes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Error code -Cause -Mitigation -
0xC1800118WSUS has downloaded content that it cannot use due to a missing decryption key.See [Steps to resolve error 0xC1800118](https://blogs.technet.microsoft.com/wsus/2016/09/21/resolving-error-0xc1800118/) for information.
0xC1900200Setup.exe has detected that the machine does not meet the minimum system requirements.Ensure the system you are trying to upgrade meets the minimum system requirements.
See [Windows 10 specifications](https://www.microsoft.com/en-us/windows/windows-10-specifications) for information.
0x80090011A device driver error occurred during user data migration.Contact your hardware vendor and get all the device drivers updated. It is recommended to have an active internet connection during upgrade process. -
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
0xC7700112Failure to complete writing data to the system drive, possibly due to write access failure on the hard disk.This issue is resolved in the latest version of Upgrade Assistant. -
Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
0x80190001An unexpected error was encountered while attempting to download files required for upgrade.To resolve this issue, download and run the media creation tool. See [Download windows 10](https://www.microsoft.com/en-us/software-download/windows10). -
0x80246007The update was not downloaded successfully.Attempt other methods of upgrading the operating system.
-Download and run the media creation tool. See [Download windows 10](https://www.microsoft.com/en-us/software-download/windows10). -
Attempt to upgrade using .ISO or USB.
-**Note**: Windows 10 Enterprise isn’t available in the media creation tool. For more information, go to the [Volume Licensing Service Center](https://www.microsoft.com/licensing/servicecenter/default.aspx). -
0xC1900201The system did not pass the minimum requirements to install the update.Contact the hardware vendor to get the latest updates.
0x80240017The upgrade is unavailable for this edition of Windows.Administrative policies enforced by your organization might be preventing the upgrade. Contact your IT administrator.
0x80070020The existing process cannot access the file because it is being used by another process.Use the MSCONFIG tool to perform a clean boot on the machine and then try to perform the update again. For more information, see [How to perform a clean boot in Windows](https://support.microsoft.com/en-us/kb/929135).
0x80070522The user doesn’t have required privilege or credentials to upgrade.Ensure that you have signed in as a local administrator or have local administrator privileges.
0xC1900107A cleanup operation from a previous installation attempt is still pending and a system reboot is required in order to continue the upgrade. -Reboot the device and run setup again. If restarting device does not resolve the issue, then use the Disk Cleanup utility and cleanup the temporary as well as the System files. For more information, see [Disk cleanup in Windows 10](https://support.microsoft.com/en-us/instantanswers/8fef4121-711b-4be1-996f-99e02c7301c2/disk-cleanup-in-windows-10).
0xC1900209The user has chosen to cancel because the system does not pass the compatibility scan to install the update. Setup.exe will report this error when it can upgrade the machine with user data but cannot migrate installed applications.Incompatible software is blocking the upgrade process. Uninstall the application and try the upgrade again. See [Windows 10 Pre-Upgrade Validation using SETUP.EXE](https://blogs.technet.microsoft.com/mniehaus/2015/08/23/windows-10-pre-upgrade-validation-using-setup-exe/) for more information. - -
You can also download the [Windows Assessment and Deployment Kit (ADK) for Windows 10](http://go.microsoft.com/fwlink/p/?LinkId=526740) and install Application Compatibility Tools. -
0x8007002 This error is specific to upgrades using System Center Configuration Manager 2012 R2 SP1 CU3 (5.00.8238.1403)Analyze the SMSTS.log and verify that the upgrade is failing on "Apply Operating system" Phase: Error 80072efe DownloadFileWithRanges() failed. 80072efe. ApplyOperatingSystem (0x0760) - -
The error 80072efe means that the connection with the server was terminated abnormally. - -
To resolve this issue, try the OS Deployment test on a client in same VLAN as the Configuration Manager server. Check the network configuration for random client-server connection issues happening on the remote VLAN. -
0x80240FFF Occurs when update synchronization fails. It can occur when you are using Windows Server Update Services on its own or when it is integrated with System Center Configuration Manager. If you enable update synchronization before you install hotfix 3095113, WSUS doesn't recognize the Upgrades classification and instead treats the upgrade like a regular update. You can prevent this by installing hotfix 3095113 before you enable update synchronization. However, if you have already run into this problem, do the following: - -
    -
  1. Disable the Upgrades classification.
  2. -
  3. Install hotfix 3095113.
  4. -
  5. Delete previously synched updates.
  6. -
  7. Enable the Upgrades classification.
  8. -
  9. Perform a full synch.
  10. -
-
For detailed information on how to run these steps check out How to delete upgrades in WSUS.

-
0x8007007EOccurs when update synchronization fails because you do not have hotfix 3095113 installed before you enable update synchronization. Specifically, the CopyToCache operation fails on clients that have already downloaded the upgrade because Windows Server Update Services has bad metadata related to the upgrade. It can occur when you are using standalone Windows Server Update Services or when WSUS is integrated with System Center Configuration Manager. Use the following steps to repair Windows Server Update Services. You must run these steps on each WSUS server that synched metadata before you installed the hotfix. - -
    -
  1. Stop the Windows Update service. Sign in as a user with administrative privileges, and then do the following: -
      -
    1. Open Administrative Tools from the Control Panel.
    2. -
    3. Double-click Services.
    4. -
    5. Find the Windows Update service, right-click it, and then click Stop. If prompted, enter your credentials.
    6. -
    -
  2. -
  3. Delete all files and folders under c:\Windows\SoftwareDistribution\DataStore.
  4. -
  5. Restart the Windows Update service.
  6. -
-
- -### Other error codes - - - - - - - - - - - - - - - -
Error CodesCauseMitigation
0x80070003- 0x20007 -This is a failure during SafeOS phase driver installation. - -[Verify device drivers](https://msdn.microsoft.com/windows/hardware/drivers/install/troubleshooting-device-and-driver-installations) on the computer, and [analyze log files](#analyze-log-files) to determine the problem driver. -
0x8007025D - 0x2000C -This error occurs if the ISO file's metadata is corrupt."Re-download the ISO/Media and re-attempt the upgrade. - -Alternatively, re-create installation media the [Media Creation Tool](https://www.microsoft.com/en-us/software-download/windows10). - -
0x80070490 - 0x20007An incompatible device driver is present. - -[Verify device drivers](https://msdn.microsoft.com/windows/hardware/drivers/install/troubleshooting-device-and-driver-installations) on the computer, and [analyze log files](#analyze-log-files) to determine the problem driver. - -
0xC1900101 - 0x2000c -An unspecified error occurred in the SafeOS phase during WIM apply. This can be caused by an outdated driver or disk corruption. -Run checkdisk to repair the file system. For more information, see the [quick fixes](#quick-fixes) section in this guide. -
Update drivers on the computer, and select "Download and install updates (recommended)" during the upgrade process. Disconnect devices other than the mouse, keyboard and display.
0xC1900200 - 0x20008 - -The computer doesn’t meet the minimum requirements to download or upgrade to Windows 10. - -See [Windows 10 Specifications](https://www.microsoft.com/en-us/windows/windows-10-specifications) and verify the computer meets minimum requirements. - -
Review logs for [compatibility information](https://blogs.technet.microsoft.com/askcore/2016/01/21/using-the-windows-10-compatibility-reports-to-understand-upgrade-issues/).
0x80070004 - 0x3000D -This is a problem with data migration during the first boot phase. There are multiple possible causes. - -[Analyze log files](#analyze-log-files) to determine the issue.
0xC1900101 - 0x4001E -Installation failed in the SECOND_BOOT phase with an error during PRE_OOBE operation. -This is a generic error that occurs during the OOBE phase of setup. See the [0xC1900101](#0xc1900101) section of this guide and review general troubleshooting procedures described in that section.
0x80070005 - 0x4000D -The installation failed in the SECOND_BOOT phase with an error in during MIGRATE_DATA operation. This error indicates that access was denied while attempting to migrate data. -[Analyze log files](#analyze-log-files) to determine the data point that is reporting access denied.
0x80070004 - 0x50012 -Windows Setup failed to open a file. -[Analyze log files](#analyze-log-files) to determine the data point that is reporting access problems.
0xC190020e -
0x80070070 - 0x50011 -
0x80070070 - 0x50012 -
0x80070070 - 0x60000 -
These errors indicate the computer does not have enough free space available to install the upgrade. -To upgrade a computer to Windows 10, it requires 16 GB of free hard drive space for a 32-bit OS, and 20 GB for a 64-bit OS. If there is not enough space, attempt to [free up drive space](https://support.microsoft.com/en-us/help/17421/windows-free-up-drive-space) before proceeding with the upgrade. - -
Note: If your device allows it, you can use an external USB drive for the upgrade process. Windows setup will back up the previous version of Windows to a USB external drive. The external drive must be at least 8GB (16GB is recommended). The external drive should be formatted using NTFS. Drives that are formatted in FAT32 may run into errors due to FAT32 file size limitations. USB drives are preferred over SD cards because drivers for SD cards are not migrated if the device does not support Connected Standby. -
- - - +This topic contains a brief introduction to Windows 10 installation processes, and provides resolution procedures that IT administrators can use to resolve issues with Windows 10 upgrade. + +The topic was originally one page, but has been divided into sub-topics of different technical levels. Basic level provides common procedures that can resolve several types of upgrade errors. Advanced level requires some experience with detailed troubleshooting methods. + +The following four levels are assigned: + +Level 100: Basic
+Level 200: Moderate
+Level 300: Moderate advanced
+Level 400: Advanced
+ +## In this guide + +See the following topics: + +- [Quick fixes](quick-fixes.md): \Level 100\ Steps you can take to eliminate many Windows upgrade errors.
+- [SetupDiag](setupdiag.md): \Level 300\ SetupDiag is a new tool to help you isolate the root cause of an upgrade failure. +- [Troubleshooting upgrade errors](troubleshoot-upgrade-errors.md): \Level 300\ General advice and techniques for troubleshooting Windows 10 upgrade errors, and an explanation of phases used during the upgrade process.
+- [Windows Error Reporting](windows-error-reporting.md): \Level 300\ How to use Event Viewer to review details about a Windows 10 upgrade. +- [Upgrade error codes](upgrade-error-codes.md): \Level 400\ The components of an error code are explained. + - [Result codes](upgrade-error-codes.md#result-codes): Information about result codes. + - [Extend codes](upgrade-error-codes.md#extend-codes): Information about extend codes. +- [Log files](log-files.md): \Level 400\ A list and description of log files useful for troubleshooting. + - [Log entry structure](log-files.md#log-entry-structure): The format of a log entry is described. + - [Analyze log files](log-files.md#analyze-log-files): General procedures for log file analysis, and an example. +- [Resolution procedures](resolution-procedures.md): \Level 200\ Causes and mitigation procedures associated with specific error codes. + - [0xC1900101](resolution-procedures.md#0xc1900101): Information about the 0xC1900101 result code. + - [0x800xxxxx](resolution-procedures.md#0x800xxxxx): Information about result codes that start with 0x800. + - [Other result codes](resolution-procedures.md#other-result-codes): Additional causes and mitigation procedures are provided for some result codes. + - [Other error codes](resolution-procedures.md#other-error-codes): Additional causes and mitigation procedures are provided for some error codes. +- [Submit Windows 10 upgrade errors](submit-errors.md): \Level 100\ Submit upgrade errors to Microsoft for analysis. ## Related topics diff --git a/windows/deployment/upgrade/setupdiag.md b/windows/deployment/upgrade/setupdiag.md index 71f47196cb..a460f3c8b5 100644 --- a/windows/deployment/upgrade/setupdiag.md +++ b/windows/deployment/upgrade/setupdiag.md @@ -16,6 +16,10 @@ ms.localizationpriority: high **Applies to** - Windows 10 +>[!NOTE] +>This is a 300 level topic (moderate advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + [SetupDiag.exe](https://go.microsoft.com/fwlink/?linkid=870142) is a standalone diagnostic tool that can be used to obtain details about why a Windows 10 upgrade was unsuccessful. SetupDiag works by examining Windows Setup log files. It attempts to parse these log files to determine the root cause of a failure to update or upgrade the computer to Windows 10. SetupDiag can be run on the computer that failed to update, or you can export logs from the computer to another location and run SetupDiag in offline mode. diff --git a/windows/deployment/upgrade/submit-errors.md b/windows/deployment/upgrade/submit-errors.md index 01a1e06134..32eddd5c45 100644 --- a/windows/deployment/upgrade/submit-errors.md +++ b/windows/deployment/upgrade/submit-errors.md @@ -16,6 +16,10 @@ ms.localizationpriority: high **Applies to** - Windows 10 +>[!NOTE] +>This is a 100 level topic (basic).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + ## In this topic This topic describes how to submit problems with a Windows 10 upgrade to Microsoft using the Windows 10 Feedback Hub. diff --git a/windows/deployment/upgrade/troubleshoot-upgrade-errors.md b/windows/deployment/upgrade/troubleshoot-upgrade-errors.md new file mode 100644 index 0000000000..a7f5d26c91 --- /dev/null +++ b/windows/deployment/upgrade/troubleshoot-upgrade-errors.md @@ -0,0 +1,91 @@ +--- +title: Troubleshoot Windows 10 upgrade errors - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Troubleshooting upgrade errors + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 300 level topic (moderately advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + +If a Windows 10 upgrade is not successful, it can be very helpful to understand *when* an error occurred in the upgrade process. + +Briefly, the upgrade process consists of four phases: **Downlevel**, **SafeOS**, **First boot**, and **Second boot**. The computer will reboot once between each phase. + +These phases are explained in greater detail [below](#the-windows-10-upgrade-process). First, let's summarize the actions performed during each phase because this affects the type of errors that can be encountered. + +1. **Downlevel phase**: Because this phase runs on the source OS, upgrade errors are not typically seen. If you do encounter an error, ensure the source OS is stable. Also ensure the Windows setup source and the destination drive are accessible. + +2. **SafeOS phase**: Errors most commonly occur during this phase due to hardware issues, firmware issues, or non-microsoft disk encryption software. + + Since the computer is booted into Windows PE during the SafeOS phase, a useful troubleshooting technique is to boot into [Windows PE](https://docs.microsoft.com/windows-hardware/manufacture/desktop/winpe-intro) using installation media. You can use the [media creation tool](https://www.microsoft.com/software-download/windows10) to create bootable media, or you can use tools such as the [Windows ADK](https://developer.microsoft.com/windows/hardware/windows-assessment-deployment-kit), and then boot your device from this media to test for hardware and firmware compatibility issues. + + **Do not proceed with the Windows 10 installation after booting from this media**. This method can only be used to perform a clean install which will not migrate any of your apps and settings, and you will be required re-enter your Windows 10 license information. + + If the computer does not successfully boot into Windows PE using the media that you created, this is likely due to a hardware or firmware issue. Check with your hardware manufacturer and apply any recommended BIOS and firmware updates. If you are still unable to boot to installation media after applying updates, disconnect or replace legacy hardware. + + If the computer successfully boots into Windows PE, but you are not able to browse the system drive on the computer, it is possible that non-Microsoft disk encryption software is blocking your ability to perform a Windows 10 upgrade. Update or temporarily remove the disk encryption. + +3. **First boot phase**: Boot failures in this phase are relatively rare, and almost exclusively caused by device drivers. Disconnect all peripheral devices except for the mouse, keyboard, and display. Obtain and install updated device drivers, then retry the upgrade. + +4. **Second boot phase**: In this phase, the system is running under the target OS with new drivers. Boot failures are most commonly due to anti-virus software or filter drivers. Disconnect all peripheral devices except for the mouse, keyboard, and display. Obtain and install updated device drivers, temporarily uninstall anti-virus software, then retry the upgrade. + +If the general troubleshooting techniques described above or the [quick fixes](quick-fixes.md) detailed below do not resolve your issue, you can attempt to analyze [log files](log-files.md) and interpret [upgrade error codes](upgrade-error-codes.md). You can also [Submit Windows 10 upgrade errors using Feedback Hub](submit-errors.md) so that Microsoft can diagnose your issue. + +## The Windows 10 upgrade process + +The **Windows Setup** application is used to upgrade a computer to Windows 10, or to perform a clean installation. Windows Setup starts and restarts the computer, gathers information, copies files, and creates or adjusts configuration settings. + +When performing an operating system upgrade, Windows Setup uses phases described below. A reboot occurs between each of the phases. After the first reboot, the user interface will remain the same until the upgrade is completed. Percent progress is displayed and will advance as you move through each phase, reaching 100% at the end of the second boot phase. + +1. **Downlevel phase**: The downlevel phase is run within the previous operating system. Windows files are copied and installation components are gathered. + + ![downlevel phase](../images/downlevel.png) + +2. **Safe OS phase**: A recovery partition is configured, Windows files are expanded, and updates are installed. An OS rollback is prepared if needed. Example error codes: 0x2000C, 0x20017. + + ![safeOS phase](../images/safeos.png) + +3. **First boot phase**: Initial settings are applied. Example error codes: 0x30018, 0x3000D. + + ![first boot phase](../images/firstboot.png) + +4. **Second boot phase**: Final settings are applied. This is also called the **OOBE boot phase**. Example error codes: 0x4000D, 0x40017. + + At the end of the second boot phase, the **Welcome to Windows 10** screen is displayed, preferences are configured, and the Windows 10 sign-in prompt is displayed. + + ![second boot phase](../images/secondboot.png) + + ![second boot phase](../images/secondboot2.png) + + ![second boot phase](../images/secondboot3.png) + +5. **Uninstall phase**: This phase occurs if upgrade is unsuccessful (image not shown). Example error codes: 0x50000, 0x50015. + +**Figure 1**: Phases of a successful Windows 10 upgrade (uninstall is not shown): + +![Upgrade process](../images/upgrade-process.png) + +DU = Driver/device updates.
+OOBE = Out of box experience.
+WIM = Windows image (Microsoft) + +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) diff --git a/windows/deployment/upgrade/upgrade-error-codes.md b/windows/deployment/upgrade/upgrade-error-codes.md new file mode 100644 index 0000000000..cdd4fe37c9 --- /dev/null +++ b/windows/deployment/upgrade/upgrade-error-codes.md @@ -0,0 +1,144 @@ +--- +title: Upgrade error codes - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Upgrade error codes + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 400 level topic (advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + + +If the upgrade process is not successful, Windows Setup will return two codes: + +1. **A result code**: The result code corresponds to a specific Win32 or NTSTATUS error. +2. **An extend code**: The extend code contains information about both the *phase* in which an error occurred, and the *operation* that was being performed when the error occurred. + +>For example, a result code of **0xC1900101** with an extend code of **0x4000D** will be returned as: **0xC1900101 - 0x4000D**. + +Note: If only a result code is returned, this can be because a tool is being used that was not able to capture the extend code. For example, if you are using the [Windows 10 Upgrade Assistant](https://support.microsoft.com/en-us/kb/3159635) then only a result code might be returned. + +>[!TIP] +>If you are unable to locate the result and extend error codes, you can attempt to find these codes using Event Viewer. For more information, see [Windows Error Reporting](windows-error-reporting.md). + +## Result codes + +>A result code of **0xC1900101** is generic and indicates that a rollback occurred. In most cases, the cause is a driver compatibility issue.
To troubleshoot a failed upgrade that has returned a result code of 0xC1900101, analyze the extend code to determine the Windows Setup phase, and see the [Resolution procedures](resolution-procedures.md) section later in this article. + +Result codes can be matched to the type of error encountered. To match a result code to an error: + +1. Identify the error code type as either Win32 or NTSTATUS using the first hexadecimal digit: +
**8** = Win32 error code (ex: 0x**8**0070070) +
**C** = NTSTATUS value (ex: 0x**C**1900107) +2. Write down the last 4 digits of the error code (ex: 0x8007**0070** = 0070). These digits are the actual error code type as defined in the [HRESULT](https://msdn.microsoft.com/en-us/library/cc231198.aspx) or the [NTSTATUS](https://msdn.microsoft.com/en-us/library/cc231200.aspx) structure. Other digits in the code identify things such as the device type that produced the error. +3. Based on the type of error code determined in the first step (Win32 or NTSTATUS), match the 4 digits derived from the second step to either a Win32 error code or NTSTATUS value using the following links: + - [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) + - [NTSTATUS value](https://msdn.microsoft.com/en-us/library/cc704588.aspx) + +Examples: +- 0x80070070 + - Based on the "8" this is a Win32 error code + - The last four digits are 0070, so look up 0x00000070 in the [Win32 error code](https://msdn.microsoft.com/en-us/library/cc231199.aspx) table + - The error is: **ERROR_DISK_FULL** +- 0xC1900107 + - Based on the "C" this is an NTSTATUS error code + - The last four digits are 0107, so look up 0x00000107 in the [NTSTATUS value](https://msdn.microsoft.com/en-us/library/cc704588.aspx) table + - The error is: **STATUS_SOME_NOT_MAPPED** + +Some result codes are self-explanatory, whereas others are more generic and require further analysis. In the examples shown above, ERROR_DISK_FULL indicates that the hard drive is full and additional room is needed to complete Windows upgrade. The message STATUS_SOME_NOT_MAPPED is more ambiguous, and means that an action is pending. In this case, the action pending is often the cleanup operation from a previous installation attempt, which can be resolved with a system reboot. + +## Extend codes + +>**Important**: Extend codes reflect the current Windows 10 upgrade process, and might change in future releases of Windows 10. The codes discussed in this section apply to Windows 10 version 1607, also known as the Anniversary Update. + +Extend codes can be matched to the phase and operation when an error occurred. To match an extend code to the phase and operation: + +1. Use the first digit to identify the phase (ex: 0x4000D = 4). +2. Use the last two digits to identify the operation (ex: 0x4000D = 0D). +3. Match the phase and operation to values in the tables provided below. + +The following tables provide the corresponding phase and operation for values of an extend code: + +
+ + + +
Extend code: phase
HexPhase +
0SP_EXECUTION_UNKNOWN +
1SP_EXECUTION_DOWNLEVEL +
2SP_EXECUTION_SAFE_OS +
3SP_EXECUTION_FIRST_BOOT +
4SP_EXECUTION_OOBE_BOOT +
5SP_EXECUTION_UNINSTALL +
+ + + + + + + +
Extend code: operation
+ +
HexOperation +
0SP_EXECUTION_OP_UNKNOWN +
1SP_EXECUTION_OP_COPY_PAYLOAD +
2SP_EXECUTION_OP_DOWNLOAD_UPDATES +
3SP_EXECUTION_OP_INSTALL_UPDATES +
4SP_EXECUTION_OP_INSTALL_RECOVERY_ENVIRONMENT +
5SP_EXECUTION_OP_INSTALL_RECOVERY_IMAGE +
6SP_EXECUTION_OP_REPLICATE_OC +
7SP_EXECUTION_OP_INSTALL_DRVIERS +
8SP_EXECUTION_OP_PREPARE_SAFE_OS +
9SP_EXECUTION_OP_PREPARE_ROLLBACK +
ASP_EXECUTION_OP_PREPARE_FIRST_BOOT +
BSP_EXECUTION_OP_PREPARE_OOBE_BOOT +
CSP_EXECUTION_OP_APPLY_IMAGE +
DSP_EXECUTION_OP_MIGRATE_DATA +
ESP_EXECUTION_OP_SET_PRODUCT_KEY +
FSP_EXECUTION_OP_ADD_UNATTEND +
+
+ +
HexOperation +
10SP_EXECUTION_OP_ADD_DRIVER +
11SP_EXECUTION_OP_ENABLE_FEATURE +
12SP_EXECUTION_OP_DISABLE_FEATURE +
13SP_EXECUTION_OP_REGISTER_ASYNC_PROCESS +
14SP_EXECUTION_OP_REGISTER_SYNC_PROCESS +
15SP_EXECUTION_OP_CREATE_FILE +
16SP_EXECUTION_OP_CREATE_REGISTRY +
17SP_EXECUTION_OP_BOOT +
18SP_EXECUTION_OP_SYSPREP +
19SP_EXECUTION_OP_OOBE +
1ASP_EXECUTION_OP_BEGIN_FIRST_BOOT +
1BSP_EXECUTION_OP_END_FIRST_BOOT +
1CSP_EXECUTION_OP_BEGIN_OOBE_BOOT +
1DSP_EXECUTION_OP_END_OOBE_BOOT +
1ESP_EXECUTION_OP_PRE_OOBE +
1FSP_EXECUTION_OP_POST_OOBE +
20SP_EXECUTION_OP_ADD_PROVISIONING_PACKAGE +
+
+ +For example: An extend code of **0x4000D**, represents a problem during phase 4 (**0x4**) with data migration (**000D**). + +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) diff --git a/windows/deployment/upgrade/windows-error-reporting.md b/windows/deployment/upgrade/windows-error-reporting.md new file mode 100644 index 0000000000..e8c3251320 --- /dev/null +++ b/windows/deployment/upgrade/windows-error-reporting.md @@ -0,0 +1,66 @@ +--- +title: Windows error reporting - Windows IT Pro +description: Resolve Windows 10 upgrade errors for ITPros. Technical information for IT professionals to help diagnose Windows setup errors. +keywords: deploy, error, troubleshoot, windows, 10, upgrade, code, rollback, ITPro +ms.prod: w10 +ms.mktglfcycl: deploy +ms.sitesec: library +ms.pagetype: deploy +author: greg-lindsay +ms.date: 03/30/2018 +ms.localizationpriority: high +--- + +# Windows error reporting + +**Applies to** +- Windows 10 + +>[!NOTE] +>This is a 300 level topic (moderately advanced).
+>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. + + +When Windows Setup fails, the result and extend code are recorded as an informational event in the Application log by Windows Error Reporting as event 1001. The event name is **WinSetupDiag02**. You can use Event Viewer to review this event, or you can use Windows PowerShell. + +To use Windows PowerShell, type the following commands from an elevated Windows PowerShell prompt: + +``` +$events = Get-WinEvent -FilterHashtable @{LogName="Application";ID="1001";Data="WinSetupDiag02"} +$event = [xml]$events[0].ToXml() +$event.Event.EventData.Data +``` + +To use Event Viewer: +1. Open Event Viewer and navigate to **Windows Logs\Application**. +2. Click **Find**, and then search for **winsetupdiag02**. +3. Double-click the event that is highlighted. + +Note: For legacy operating systems, the Event Name was WinSetupDiag01. + +Ten parameters are listed in the event: +
+ + + + + + + + + + + +
P1: The Setup Scenario (1=Media,5=WindowsUpdate,7=Media Creation Tool)
P2: Setup Mode (x=default,1=Downlevel,5=Rollback)
P3: New OS Architecture (x=default,0=X86,9=AMD64)
P4: Install Result (x=default,0=Success,1=Failure,2=Cancel,3=Blocked)
P5: Result Error Code (Ex: 0xc1900101)
P6: Extend Error Code (Ex: 0x20017)
P7: Source OS build (Ex: 9600)
P8: Source OS branch (not typically available)
P9: New OS build (Ex: 16299}
P10: New OS branch (Ex: rs3_release}
+ +The event will also contain links to log files that can be used to perform a detailed diagnosis of the error. An example of this event from a successful upgrade is shown below. + +![Windows Error Reporting](../images/event.png) + +## Related topics + +[Windows 10 FAQ for IT professionals](https://technet.microsoft.com/en-us/windows/dn798755.aspx) +
[Windows 10 Enterprise system requirements](https://technet.microsoft.com/en-us/windows/dn798752.aspx) +
[Windows 10 Specifications](https://www.microsoft.com/en-us/windows/Windows-10-specifications) +
[Windows 10 IT pro forums](https://social.technet.microsoft.com/Forums/en-US/home?category=Windows10ITPro) +
[Fix Windows Update errors by using the DISM or System Update Readiness tool](https://support.microsoft.com/kb/947821) From 58c0b04d4b3409f6ac7e8f4530ab0475842aaff8 Mon Sep 17 00:00:00 2001 From: Greg Lindsay Date: Sun, 1 Apr 2018 14:44:55 +0000 Subject: [PATCH 5/8] Merged PR 6806: minor typo fixing one small typo in one file. --- windows/deployment/TOC.md | 1 - windows/deployment/upgrade/resolution-procedures.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/windows/deployment/TOC.md b/windows/deployment/TOC.md index d36561005b..94f70ce62d 100644 --- a/windows/deployment/TOC.md +++ b/windows/deployment/TOC.md @@ -16,7 +16,6 @@ ### [Log files](upgrade/log-files.md) ### [Resolution procedures](upgrade/resolution-procedures.md) ### [Submit Windows 10 upgrade errors](upgrade/submit-errors.md) -### [SetupDiag](upgrade/setupdiag.md) ## [Deploy Windows 10](deploy.md) diff --git a/windows/deployment/upgrade/resolution-procedures.md b/windows/deployment/upgrade/resolution-procedures.md index 713ccc1b67..ae8d50adda 100644 --- a/windows/deployment/upgrade/resolution-procedures.md +++ b/windows/deployment/upgrade/resolution-procedures.md @@ -17,7 +17,7 @@ ms.localizationpriority: high - Windows 10 >[!NOTE] ->This is a 400 level topic (advanced).
+>This is a 200 level topic (moderate).
>See [Resolve Windows 10 upgrade errors](resolve-windows-10-upgrade-errors.md) for a full list of topics in this article. From 8a8470b40235d7d5dcdcb028a2417d7379aa9b78 Mon Sep 17 00:00:00 2001 From: Jeanie Decker Date: Mon, 2 Apr 2018 16:08:09 +0000 Subject: [PATCH 6/8] Merged PR 6810: Fix typo and link --- windows/application-management/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/application-management/index.md b/windows/application-management/index.md index fdd42c35b8..23490f9d99 100644 --- a/windows/application-management/index.md +++ b/windows/application-management/index.md @@ -24,8 +24,8 @@ Learn about managing applications in Windows 10 and Windows 10 Mobile clients. | [Enable or block Windows Mixed Reality apps in the enterprise](manage-windows-mixed-reality.md) | Learn how to enable or block Windows Mixed Reality apps. | |[App-V](app-v/appv-getting-started.md)| Microsoft Application Virtualization (App-V) for Windows 10 enables organizations to deliver Win32 applications to users as virtual applications| | [Service Host process refactoring](svchost-service-refactoring.md) | Changes to Service Host grouping in Windows 10 | -|[Per User services in Windows 10](sideload-apps-in-windows-10.md)| Overview of per user services and instructions for viewing and disabling them in Windows 10 and Windows 2016| +|[Per User services in Windows 10](per-user-services-in-windows.md)| Overview of per user services and instructions for viewing and disabling them in Windows 10 and Windows 2016| [Disabling System Services in Windows Server](https://docs.microsoft.com/windows-server/security/windows-services/security-guidelines-for-disabling-system-services-in-windows-server) | Security guidelines for disabling services in Windows Server 2016 with Desktop Experience |[Understand apps in Windows 10](apps-in-windows-10.md)| Overview of the different apps included by default in Windows 10 Enterprise| -| [Deploy app updgrades on Windows 10 Mobile](deploy-app-upgrades-windows-10-mobile.md) | How to upgrade apps on Windows 10 Mobile | +| [Deploy app upgrades on Windows 10 Mobile](deploy-app-upgrades-windows-10-mobile.md) | How to upgrade apps on Windows 10 Mobile | [Change history for Application management](change-history-for-application-management.md) | This topic lists new and updated topics in the Application management documentation for Windows 10 and Windows 10 Mobile. From 0e1f9f5f3ac5cf7b2eade54dd2f476e23a0b6ad5 Mon Sep 17 00:00:00 2001 From: Justin Hall Date: Mon, 2 Apr 2018 09:52:10 -0700 Subject: [PATCH 7/8] fixed typos in file titles --- .../hello-for-business/hello-hybrid-key-trust-prereqs.md | 2 +- .../security/identity-protection/hello-for-business/toc.md | 2 +- ...e-group-policy-management-console-to-windows-firewall.md | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/windows/security/identity-protection/hello-for-business/hello-hybrid-key-trust-prereqs.md b/windows/security/identity-protection/hello-for-business/hello-hybrid-key-trust-prereqs.md index 43ce0a6db5..645efb6bee 100644 --- a/windows/security/identity-protection/hello-for-business/hello-hybrid-key-trust-prereqs.md +++ b/windows/security/identity-protection/hello-for-business/hello-hybrid-key-trust-prereqs.md @@ -1,5 +1,5 @@ --- -title: Hybrid Key trust Windows Hello for Business Prerequistes (Windows Hello for Business) +title: Hybrid Key trust Windows Hello for Business Prerequisites (Windows Hello for Business) description: Prerequisites for Hybrid Windows Hello for Business Deployments keywords: identity, PIN, biometric, Hello, passport, WHFB, hybrid, key-trust ms.prod: w10 diff --git a/windows/security/identity-protection/hello-for-business/toc.md b/windows/security/identity-protection/hello-for-business/toc.md index 86c01a544c..ae838d1fcc 100644 --- a/windows/security/identity-protection/hello-for-business/toc.md +++ b/windows/security/identity-protection/hello-for-business/toc.md @@ -22,7 +22,7 @@ #### [Sign-in and Provision](hello-hybrid-key-whfb-provision.md) ### [Hybrid Azure AD Joined Certificate Trust Deployment](hello-hybrid-cert-trust.md) -#### [Prerequistes](hello-hybrid-cert-trust-prereqs.md) +#### [Prerequisites](hello-hybrid-cert-trust-prereqs.md) #### [New Installation Baseline](hello-hybrid-cert-new-install.md) #### [Configure Azure Device Registration](hello-hybrid-cert-trust-devreg.md) #### [Configure Windows Hello for Business policy settings](hello-hybrid-cert-whfb-settings.md) diff --git a/windows/security/identity-protection/windows-firewall/open-the-group-policy-management-console-to-windows-firewall.md b/windows/security/identity-protection/windows-firewall/open-the-group-policy-management-console-to-windows-firewall.md index c7078281bc..04fceb336d 100644 --- a/windows/security/identity-protection/windows-firewall/open-the-group-policy-management-console-to-windows-firewall.md +++ b/windows/security/identity-protection/windows-firewall/open-the-group-policy-management-console-to-windows-firewall.md @@ -1,5 +1,5 @@ --- -title: Open the Group Policy Management Console to Windows Defender Firewall with Advanced Security (Windows 10) +title: Open the Group Policy Management Console to Windows Defender Firewall (Windows 10) description: Open the Group Policy Management Console to Windows Defender Firewall with Advanced Security ms.assetid: 5090b2c8-e038-4905-b238-19ecf8227760 ms.prod: w10 @@ -7,10 +7,10 @@ ms.mktglfcycl: deploy ms.sitesec: library ms.pagetype: security author: brianlic-msft -ms.date: 08/17/2017 +ms.date: 04/02/2017 --- -# Open the Group Policy Management Console to Windows Defender Firewall with Advanced Security +# Open the Group Policy Management Console to Windows Defender Firewall **Applies to** - Windows 10 From 59425f2b10873d33a1637ae095971bc6179f6858 Mon Sep 17 00:00:00 2001 From: Justin Hall Date: Mon, 2 Apr 2018 10:23:58 -0700 Subject: [PATCH 8/8] added link to a blog --- ...cker-by-using-mbam-as-part-of-a-windows-deploymentmbam-25.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdop/mbam-v25/how-to-enable-bitlocker-by-using-mbam-as-part-of-a-windows-deploymentmbam-25.md b/mdop/mbam-v25/how-to-enable-bitlocker-by-using-mbam-as-part-of-a-windows-deploymentmbam-25.md index 7234d14a83..ca4cba335c 100644 --- a/mdop/mbam-v25/how-to-enable-bitlocker-by-using-mbam-as-part-of-a-windows-deploymentmbam-25.md +++ b/mdop/mbam-v25/how-to-enable-bitlocker-by-using-mbam-as-part-of-a-windows-deploymentmbam-25.md @@ -14,7 +14,7 @@ ms.date: 04/23/2017 # How to Enable BitLocker by Using MBAM as Part of a Windows Deployment -This topic explains how to enable BitLocker on an end user's computer by using MBAM as part of your Windows imaging and deployment process. +This topic explains how to enable BitLocker on an end user's computer by using MBAM as part of your Windows imaging and deployment process. If you see a black screen at restart (after Install phase concludes) indicating that the drive cannot be unlocked, see [Windows versions prior Windows 10 build 1511 fail to start after "Setup Windows and Configuration Manager" step when Pre-Provision BitLocker is used with Windows PE 10.0.586.0 (1511)](https://blogs.technet.microsoft.com/system_center_configuration_manager_operating_system_deployment_support_blog/2016/03/30/windows-versions-prior-windows-10-build-1511-fail-to-start-after-setup-windows-and-configuration-manager-step-when-pre-provision-bitlocker-is-used-with-windows-pe-10-0-586-0-1511/). **Prerequisites:**