No Mouse Cursor During ConfigMgr OSD Task Sequence


Symptom

During a ConfigMgr OSD Task Sequence that deploys Windows 10, once the device reboots out of WinPE and into the newly installed Windows OS during the Setup Windows and ConfigMgr task, if a command prompt window is brought up using F8, no mouse cursor appears. The issue will continue to occur for the remainder of the Task Sequence. Once the Task Sequence completes, the mouse cursor will appear.

Cause

This issue is caused by a design change in Windows 10 where the mouse cursor is suppressed during Windows Setup. Because ConfigMgr OSD Task Sequences run entirely within Windows Setup in the newly installed Windows OS, the mouse cursor is suppressed during this phase of the Task Sequence.

 

Resolution

The issue can be resolved by changing the policy that by default suppresses the mouse cursor during Windows Setup. This is easily accomplished by changing the registry key value associated with the policy. The registry key value is located in the following location:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

Value Name:
EnableCursorSuppression
 
Type:
REG_DWORD

Values:
1 = Enabled – Mouse cursor is suppressed (default)
0 = Disabled – Mouse cursor is not suppressed

To ensure that the mouse cursor is available throughout the Task Sequence, the best place to set the above registry key is during the WinPE portion of the Task Sequence to the offline Windows OS. This can be done at any point between the Apply Operating System and Setup Windows and ConfigMgr tasks.

To resolve the problem, choose the preferred method from the following two choices:

  1. Importing Task Sequence Steps
  2. Manually Configuring the Task Sequence Steps

 

Importing Task Sequence Steps

  1. Download the Task Sequence with all of the needed extra steps from the link below. The steps in the Task Sequence downloaded at this step will be copied into the existing Task Sequence having the problem:
     
    CorrectMissingMouseCursor.zip
     
  2. Import into ConfigMgr the the Task Sequence downloaded in Step 1 by following the below appropriate article:
     

    ConfigMgr 2012 R2 SP1
    How to Manage Task Sequences in Configuration Manager
    How to Export and Import Task Sequences

    https://technet.microsoft.com/en-us/library/hh273490.aspx#BKMK_ExportImport
     
    ConfigMgr Current Branch
    Manage task sequences to automate tasks in System Center Configuration Manager
    Export and import task sequences

    https://docs.microsoft.com/en-us/sccm/osd/deploy-use/manage-task-sequences-to-automate-tasks#a-namebkmkexportimporta-export-and-import-task-sequences
     

  3. In the ConfigMgr console under Software Library –> Operating Systems –> Task Sequences, navigate to the newly imported Correct Missing Mouse Cursor Steps Task Sequence from Step 2.
     
    Mouse1-3
     
  4. Right click on the Missing Mouse Cursor Steps Task Sequence that was imported in Step 2 and select Edit. Make sure to leave the Task Sequence open so that its steps can be copied to the affected Task Sequence.
     
    Mouse1-4
     
  5. In the ConfigMgr console under Software Library –> Operating Systems –> Task Sequences, navigate to the affected Task Sequence.
     
    Mouse1-5
     
  6. Right click on the affected Task Sequence and select Edit.
     
    Mouse1-6
     
  7. For Steps 8-12 make sure that both the affected Task Sequence and the imported Correct Missing Mouse Cursor Steps Task Sequence are both always open. Do not close either of these Task Sequences during these steps.
     
    Mouse1-7a Mouse1-7b
     
  8. In the imported Missing Mouse Cursor Steps Task Sequence, right click on the Correct Missing Mouse Cursor group and choose Copy.
     
    Mouse1-8
     
  9. In the affected Task Sequence, click on the Apply Operating System task, and then right click and choose Paste.
     
    Mouse1-9a
     
    This should copy the Correct Missing Mouse Cursor group immediately after the Apply Operating System task.
     
    Mouse1-9b
       
  10. In the imported Missing Mouse Cursor Steps Task Sequence, right click on the Reset Mouse Suppression to Default task and choose Copy.
     
    Mouse1-11
     
  11. In the affected Task Sequence click on the last task in the Task Sequence, and then right click and choose Paste.
     
    Mouse1-12a
    Note: The last task in the Task Sequence may be different than the one shown in the above screenshot.
     
    This should copy the Reset Mouse Suppression to Default task as the last task in the Task Sequence.
     
    Mouse1-12b
     
  12. Click on the OK or Apply button on the affected Task Sequence to save the it.
     
    Mouse1-13
     
  13. Close the imported SetupComplete Workaround Steps Task Sequence.
     
    Mouse1-14
     

Notes:

  1. For step 12, the "last" task selected does not necessarily need to be the absolute last task in the Task Sequence but should be towards the end of the Task Sequence.
     
  2. For MDT Task Sequences, steps 11 –12 should be performed twice – once at the end of the State Restore group and again at the end of the Gather Logs and StateStore on Failure group. Additionally under the Options tab of the the Reset Mouse Suppression to Default task added at the end of the Gather Logs and StateStore on Failure group, Continue on error should be set.
     
  3. Steps 10-11 restore the EnableCursorSuppression policy back to it's default value in Windows. Although not absolutely needed for the solution to work, it is recommended to reset the EnableCursorSuppression policy back to its default value. This will make sure there are no unusual consequences in Windows after the Task Sequence completes of changing the policy from its default value.

 

Manually Configuring the Task Sequence Steps

  1. In the ConfigMgr console under Software Library –> Operating Systems –> Task Sequences, navigate to the affected Task Sequence.
     
    Mouse2-1
     
  2. Right click on the affected Task Sequence and select Edit.
     
    Mouse2-2
     
  3. In the affected Task Sequence click on the Apply Windows Settings task to select it.
     
    Mouse2-3
     
  4. Add a new Group immediately after the Apply Windows Settings task by going to the Add menu and then selecting New Group.
     
    Mouse2-4
     
  5. Click on the newly created group and rename to:
     
    Correct Missing Mouse Cursor
     
    Mouse2-5
     
  6. Under the Correct Missing Mouse Cursor group, add a Run Command Line task by going to the Add menu and selecting General –> Run Command Line.
     
    Mouse2-6
     
  7. Click on the newly created Run Command Line task and configure as follows:
     
    Name:
    Load Registry SOFTWARE Hive
     

    Command Line:
    reg.exe load HKLM\Temp %OSDTargetSystemDrive%\Windows\system32\config\software

     
    Mouse2-7
     

  8. Immediately after the Load Registry SOFTWARE Hive task, add another Run Command Line task by going to the Add menu and selecting General –> Run Command Line.
     
    Mouse2-8
     
  9. Click on the newly created Run Command Line task and configure as follows:
     
    Name:
    Disable Suppressed Mouse Cursor
     
     
    Command Line:
    reg.exe add "HKLM\Temp\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableCursorSuppression /t REG_DWORD /d 0 /f

     
    Mouse2-9
     

  10. Immediately after the Disable Suppressed Mouse Cursor task, add another Run Command Line task by going to the Add menu and selecting General –> Run Command Line.
     
    Mouse2-10
     
  11. Click on the newly created Run Command Line task and configure as follows:
     
    Name:
    Unmount Registry SOFTWARE Hive
     

    Command Line:
    reg.exe unload HKLM\Temp

     
    Mouse2-11
     

  12. Click on the last task in the Task Sequence.
     
    Mouse2-13

    Note: The last task in the Task Sequence may be different than the one shown in the above screenshot.
     

  13. Add a Run Command Line task by going to the Add menu and selecting General –> Run Command Line. This should add the Run Command Line task as the last task in the Task Sequence.
     
    Mouse2-14
     
  14. Click on the newly created Run Command Line task and configure as follows:
     
    Name:
    Reset Mouse Suppression to Default

    Command Line:
    reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableCursorSuppression /t REG_DWORD /d 1 /f

     
    Mouse2-15
     

  15. Click on the OK or Apply button to save the Task Sequence.
     
    Mouse2-16
     

Notes:

  1. For step 13, the "last" task selected does not necessarily need to be the absolute last task in the Task Sequence but should be towards the end of the Task Sequence.
     
  2. For MDT Task Sequences, steps 13 –15 should be performed twice – once at the end of the State Restore group and again at the end of the Gather Logs and StateStore on Failure group. Additionally under the Options tab of the the Reset Mouse Suppression to Default task added at the end of the Gather Logs and StateStore on Failure group, Continue on error should be set.
     
  3. Steps 12-14 restore the EnableCursorSuppression policy back to it's default value in Windows. Although not absolutely needed for the solution to work, it is recommended to reset the EnableCursorSuppression policy back to its default value. This will make sure there are no unusual consequences in Windows after the Task Sequence completes of changing the policy from its default value.

 

Frank Rojas
Senior Support Escalation Engineer


Comments (18)

  1. orion says:

    thanks for sharing

  2. Jesse Garcia says:

    Thanks for the post. Does this apply to all versions of Windows 10, or just perhaps 1607?

    1. Frank Rojas says:

      It applies to all current versions of Windows 10 and we expect it to also be a problem in the upcoming Windows 10 Creator Update. There is a Design Change Request (DCR) to change back the behavior, but if implemented it is not expected until at least the version after Windows 10 Creator Update.

  3. Brad says:

    It was failing updating the value until I removed the quotes on the reg.exe add step and then it worked. Just want to put this out here in case anyone experience that issue.

    1. Frank Rojas says:

      For some reason when I was posting the article it was changing the straight quotes to curly quotes. I have since updated the article using pre tags so that the reg.exe steps are displayed correctly with straight quotes. This should fix the problem. Thanks for reporting it.

      1. Cordell Melin says:

        Frank, I do not see the link for: 1.Download the Task Sequence with all of the needed extra steps from the link below.
        Could you point it out for me please?

        1. Frank Rojas says:

          I apologize. Somehow the link got stripped out of the article when I published it. I have added it back in. Thanks for reporting the problem.

  4. sebastien says:

    thanks for the very detailled steps and including MDT. the exporting of the TS is a nice touch, thanks!

  5. Todd Miller says:

    Maybe an entry in the unattend.xml's run synchronous commands would work too... I have not tried yet, but I would think adding this to the Run Synchronous section of the "generalize" phase of the unattend.xml for the Build and Capture process out to do the trick too. (change the order to be correct for your specific situation)

    disable consumer features
    5
    reg add HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Policies\System /v EnableCursorSuppression /t REG_DWORD /d 1 /f

    1. Todd Miller says:

      Maybe an entry in the unattend.xml’s run synchronous commands would work too… I have not tried yet, but I would think adding this to the Run Synchronous section of the “generalize” phase of the unattend.xml for the Build and Capture process out to do the trick too. (change the order to be correct for your specific situation)

      Show Cursor during Setup
      5
      reg add HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Policies\System /v EnableCursorSuppression /t REG_DWORD /d 1 /f

      1. Frank Rojas says:

        Theoretically should work, but also sounds a bit more complex as it requires creating a proper unattend.xml file, creating a package, updating DPs, etc. Also modifying the registry to the offline OS will also enable the policy sooner, meaning you should have the mouse cursor available sooner in the process.

  6. Thank you so much for this. It's been a long time coming and I look forward to applying this to our OSD process ASAP.

  7. kantzy says:

    Thanks for the post.
    The cursor only works only in a Window area but not thought the screen.
    i.e only on the task sequence progress window by default when no other applications are open or if you open another application like cmd/notepad, it will be visible only in that area.
    Is this an expected behavior? Is there a way to make the cursor visible everywhere on the screen?

    1. Frank Rojas says:

      I have heard of that issue but we have not been able to reproduce the issue in house. Ultimately it really shouldn't matter because you really don't need the mouse cursor in these "blank" areas - you only need it in the applications themselves.

  8. BillerDude says:

    Thank you so for posting this! Huge help getting the cursor back!

  9. BaardH says:

    Since the TS could fail well before one reaches the "Apply Operating System Image", i guess that's why you recommend checking Continue on error when in the group "Gather Logs and StateStore"?
    How about adding a variable in stead in the "Fix missing mouse cursor" group and set that variable as a condition for "Reset Mouse Suppression to Default" step in the group "Gather Logs and StateStore"?

    1. Frank Rojas says:

      You can do that too.

  10. Eli says:

    So cool! thanks for taking the time to write this up!.. Been a pain in the Butt for a long time now.

    Cheers!

Skip to main content