Windows 11 鼠标指针方案无法通过设置/控制面板正常应用,会错误显示为经典/Windows XP 样式光标

Leon Trotsky 10 信誉分
2026-08-23T13:04:19.17+00:00

问题描述

Windows 11 出现鼠标指针方案异常。

无论在“设置”还是传统“控制面板 → 鼠标 → 指针”中选择:

Windows 系统默认指针方案

第三方鼠标指针方案

已正确安装的 .cur 指针文件

点击“应用”后,实际显示的鼠标指针都会变成类似 Windows XP / Windows 经典样式的旧版箭头,而不是所选择的指针。

该问题并非第三方鼠标指针文件损坏,因为 Windows 自带指针和多个第三方指针方案均出现相同行为。

复现步骤

打开“控制面板 → 鼠标 → 指针”。

选择任意指针方案,例如第三方 STMC 指针方案。

点击“应用”。

注册表中会正确保存所选择的方案和 .cur 文件路径。

但屏幕上实际显示的指针会立即变成 Windows XP / Windows 经典样式指针。

在 Windows“设置”应用中修改鼠标指针也会发生同样的问题。

实际结果

例如选择:

STMC 2-1 45-Degree

注册表中的配置为:

HKEY_CURRENT_USER\Control Panel\Cursors

(Default)        REG_SZ          STMC 2-1 45-Degree
Arrow            REG_EXPAND_SZ  %SYSTEMROOT%\Cursors\STMC\STMC 45-Degree 01 Pointer.cur
CursorBaseSize   REG_DWORD       0x20
Scheme Source    REG_DWORD       0x1

对应文件也确实存在:

C:\WINDOWS\Cursors\STMC\STMC 45-Degree 01 Pointer.cur

但实际显示的仍然是经典/Windows XP 风格箭头。

进一步测试

已经通过 Win32 API 进行了测试。

直接使用:

LoadCursorFromFile

和:

SetSystemCursor

加载同一个 .cur 文件时,指针可以立即正确显示。

例如直接加载 Windows 自带:

C:\Windows\Cursors\aero_arrow.cur

可以正常显示 Windows 11/Aero 指针。

直接加载:

C:\WINDOWS\Cursors\STMC\STMC 45-Degree 01 Pointer.cur

也可以正常显示第三方指针。

调用:

SystemParametersInfo(SPI_SETCURSORS)

重新加载系统指针同样可以正常工作。

但是,只要再次通过 Windows“设置”或“控制面板 → 鼠标 → 指针”点击“应用”,实际显示的指针就会再次变成经典/Windows XP 样式。

因此:

.cur 文件本身可以正常加载;

Windows 可以正常显示自定义指针;

注册表中的指针路径正确;

CursorBaseSize 当前为正常的 32(0x20);

Win32 SetSystemCursor 可以正常工作;

SPI_SETCURSORS 可以正常工作;

异常似乎发生在 Windows 设置/控制面板应用鼠标指针方案的过程中。

其他信息

未主动开启特殊的辅助功能鼠标指针模式。

此前曾发现:

HKEY_CURRENT_USER\Control Panel\Cursors
CursorBaseSize = 0

手动恢复为:

CursorBaseSize = 32

后问题仍然存在。

这可能说明 Windows 的鼠标指针配置状态曾出现异常,但 CursorBaseSize 并不是问题的唯一原因。

期望结果

在“设置”或“控制面板 → 鼠标 → 指针”选择某个指针方案并点击“应用”后,Windows 应当实际显示该方案指定的 .cur/.ani 文件,而不是回退到 Windows 经典/XP 样式指针。

希望 Microsoft 检查近期 Windows 11 更新中与 mouse cursor scheme、cursor persistence、Control Panel/Settings pointer apply 相关的回归问题。

Windows 11 鼠标指针方案无法通过设置/控制面板正常应用,会错误显示为经典/Windows XP 样式光标

问题描述

Windows 11 出现鼠标指针方案异常。

无论在“设置”还是传统“控制面板 → 鼠标 → 指针”中选择:

Windows 系统默认指针方案

第三方鼠标指针方案

已正确安装的 .cur 指针文件

点击“应用”后,实际显示的鼠标指针都会变成类似 Windows XP / Windows 经典样式的旧版箭头,而不是所选择的指针。

该问题并非第三方鼠标指针文件损坏,因为 Windows 自带指针和多个第三方指针方案均出现相同行为。

复现步骤

打开“控制面板 → 鼠标 → 指针”。

选择任意指针方案,例如第三方 STMC 指针方案。

点击“应用”。

注册表中会正确保存所选择的方案和 .cur 文件路径。

但屏幕上实际显示的指针会立即变成 Windows XP / Windows 经典样式指针。

在 Windows“设置”应用中修改鼠标指针也会发生同样的问题。

实际结果

例如选择:

STMC 2-1 45-Degree

注册表中的配置为:

HKEY_CURRENT_USER\Control Panel\Cursors

(Default)        REG_SZ          STMC 2-1 45-Degree
Arrow            REG_EXPAND_SZ  %SYSTEMROOT%\Cursors\STMC\STMC 45-Degree 01 Pointer.cur
CursorBaseSize   REG_DWORD       0x20
Scheme Source    REG_DWORD       0x1

对应文件也确实存在:

C:\WINDOWS\Cursors\STMC\STMC 45-Degree 01 Pointer.cur

但实际显示的仍然是经典/Windows XP 风格箭头。

进一步测试

已经通过 Win32 API 进行了测试。

直接使用:

LoadCursorFromFile

和:

SetSystemCursor

加载同一个 .cur 文件时,指针可以立即正确显示。

例如直接加载 Windows 自带:

C:\Windows\Cursors\aero_arrow.cur

可以正常显示 Windows 11/Aero 指针。

直接加载:

C:\WINDOWS\Cursors\STMC\STMC 45-Degree 01 Pointer.cur

也可以正常显示第三方指针。

调用:

SystemParametersInfo(SPI_SETCURSORS)

重新加载系统指针同样可以正常工作。

但是,只要再次通过 Windows“设置”或“控制面板 → 鼠标 → 指针”点击“应用”,实际显示的指针就会再次变成经典/Windows XP 样式。

因此:

.cur 文件本身可以正常加载;

Windows 可以正常显示自定义指针;

注册表中的指针路径正确;

CursorBaseSize 当前为正常的 32(0x20);

Win32 SetSystemCursor 可以正常工作;

SPI_SETCURSORS 可以正常工作;

异常似乎发生在 Windows 设置/控制面板应用鼠标指针方案的过程中。

其他信息

未主动开启特殊的辅助功能鼠标指针模式。

此前曾发现:

HKEY_CURRENT_USER\Control Panel\Cursors
CursorBaseSize = 0

手动恢复为:

CursorBaseSize = 32

后问题仍然存在。

这可能说明 Windows 的鼠标指针配置状态曾出现异常,但 CursorBaseSize 并不是问题的唯一原因。

期望结果

在“设置”或“控制面板 → 鼠标 → 指针”选择某个指针方案并点击“应用”后,Windows 应当实际显示该方案指定的 .cur/.ani 文件,而不是回退到 Windows 经典/XP 样式指针。

希望 Microsoft 检查近期 Windows 11 更新中与 mouse cursor scheme、cursor persistence、Control Panel/Settings pointer apply 相关的回归问题。

Windows 商业版 | 面向 IT 专业人士的 Windows 客户端 | 用户体验 | 其他

2 个答案

排序依据: 非常有帮助
  1. liyqme 0 信誉分
    2026-08-28T04:46:09.5366667+00:00

    The post seems to be AI generated but the issue exists. I run into the same on 26200.9278: whatever mouse cursor/theme I set in new settings app or the old control panel, it does not work. My regular cursor seems to be locked into aero_arrow_l.cur and also other cursor state does not match my settings.

    What does not work:

    • Set theme in Settings/Customization.
    • Select another cursor preset in control panel.
    • Switch cursor color white/black/invert in Settings/Accessibility.
    • Change cursor size in Settings/Accessibility. It just enlarges the already large cursor.
    • Logout/reboot. The large cursor is also used before login.

    Finally GPT generated this script seems to be a workaround, although I do not fully understand:

    & {
        # Load Win32 cursor APIs.
        Add-Type @"
    using System;
    using System.Runtime.InteropServices;
    
    public static class CursorNative
    {
        [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        public static extern IntPtr LoadCursorFromFile(string lpFileName);
    
        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool SetSystemCursor(IntPtr hcur, uint id);
    }
    "@
    
        # Read the currently configured cursor scheme from the registry.
        $cursorSettings = Get-ItemProperty 'HKCU:\Control Panel\Cursors'
    
        # Registry value name -> Win32 OCR_* cursor ID.
        $cursorMap = [ordered]@{
            Arrow       = 32512  # OCR_NORMAL
            IBeam       = 32513  # OCR_IBEAM
            Wait        = 32514  # OCR_WAIT
            Crosshair   = 32515  # OCR_CROSS
            UpArrow     = 32516  # OCR_UP
    
            SizeNWSE    = 32642  # OCR_SIZENWSE
            SizeNESW    = 32643  # OCR_SIZENESW
            SizeWE      = 32644  # OCR_SIZEWE
            SizeNS      = 32645  # OCR_SIZENS
            SizeAll     = 32646  # OCR_SIZEALL
    
            No          = 32648  # OCR_NO
            Hand        = 32649  # OCR_HAND
            AppStarting = 32650  # OCR_APPSTARTING
        }
    
        foreach ($entry in $cursorMap.GetEnumerator()) {
            $role = $entry.Key
            $ocr  = [uint32]$entry.Value
    
            # Get the .cur/.ani path configured for this cursor role.
            $path = $cursorSettings.$role
    
            # Some default roles, such as IBeam or Crosshair, may intentionally
            # have an empty registry value and use a built-in Windows resource.
            if ([string]::IsNullOrWhiteSpace($path)) {
                Write-Host "[SKIP] $role - no custom cursor file configured"
                continue
            }
    
            # Expand values such as:
            #   %SystemRoot%\cursors\aero_arrow.cur
            $path = [Environment]::ExpandEnvironmentVariables($path)
    
            if (-not (Test-Path -LiteralPath $path)) {
                Write-Warning "[FAIL] $role - file not found: $path"
                continue
            }
    
            # Load the cursor directly from disk, bypassing the Windows
            # cursor-scheme loader that appears to be selecting the wrong
            # large cursor variant.
            $cursorHandle = [CursorNative]::LoadCursorFromFile($path)
    
            if ($cursorHandle -eq [IntPtr]::Zero) {
                $win32Error = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
                $message = [ComponentModel.Win32Exception]::new($win32Error).Message
    
                Write-Warning "[FAIL] $role - LoadCursorFromFile: $win32Error ($message)"
                continue
            }
    
            # Replace the corresponding system cursor for the current session.
            $result = [CursorNative]::SetSystemCursor(
                $cursorHandle,
                $ocr
            )
    
            if (-not $result) {
                $win32Error = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
                $message = [ComponentModel.Win32Exception]::new($win32Error).Message
    
                Write-Warning "[FAIL] $role - SetSystemCursor: $win32Error ($message)"
                continue
            }
    
            Write-Host "[ OK ] $role -> $path"
        }
    }
    

    此答案是否有帮助?

    10+ 个人认为此答案很有帮助。
    0 个注释 无注释

  2. Yiming Wang 5 信誉分
    2026-08-25T07:11:35.51+00:00

    Hi there! if you recently updated Build26220.9223 or similar insider update, you may find your cursors had been like rolled back. It is informed that Microsoft is trying to fix this.

    Screenshot 2026-08-25 150744

    此答案是否有帮助?

    10 个人认为此答案很有帮助。

你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。