Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Setup aborts at Phase 5/11 (Full) because SearchHighlightOff cannot write the protected SearchSettings key on Windows build 28000

未关闭 适合新手
#124 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
91/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
powershell

调研方向

从 steps/registry-taskbar-search.ps1 开始,将 SearchHighlightOff 与相邻的 WidgetServiceOff 步骤进行比较,后者已经处理受保护的 Windows 设置。在 Windows 11 build 28000 上运行 Full setup 操作,或者如果仓库提供了相应测试,则添加一个有针对性的回归测试。当这个受保护的注册表值不再中止 setup 且后续阶段继续执行时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

Summary

On Windows 11 build 28000, the Full action aborts at Phase 5/11 because the SearchHighlightOff tweak cannot write HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\SearchSettings\IsDynamicSearchBoxEnabled. Windows blocks value writes to that key at the kernel level, even for an elevated administrator.

Because the SearchHighlightOff step is not marked BestEffort (unlike the adjacent WidgetServiceOff step), this single un-writable cosmetic setting terminates the entire run, so Phases 6–11 (Edge, fonts, Terminal, PowerShell profile, Copilot, WSL) never execute.

Environment

Item Value
Windows Windows 11, build 28000 (Microsoft Windows NT 10.0.28000.0)
PowerShell 7.6.6 (Core)
winget v1.29.380
Setup entry point irm https://aka.ms/devconfig/full/setup.ps1 | iex
Resolved commit 06200f0819136c528e09533e3c8afac7e5f46ed7 (branch main)
Action Full
Elevation Yes — verified IsInRole(Administrator) = True for the running process

Steps to reproduce

  1. On Windows 11 build 28000, run irm https://aka.ms/devconfig/full/setup.ps1 | iex from an elevated PowerShell 7 session.
  2. Let setup complete Phases 1–4 and the first four steps of Phase 5.

Actual result

Phase 5/11 -- Taskbar, search & start tweaks
  ...
  -> Disable Show search highlights...

Calm OS setup stopped early.
  Windows blocked changing HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\SearchSettings\IsDynamicSearchBoxEnabled. Administrator access or Windows policy may restrict this setting.
  (_registry.ps1 line 50)
  Nothing already applied was undone -- running this again picks up where it left off.

The underlying exception is an UnauthorizedAccessException ("Attempted to perform an unauthorized operation./ 未经授权操作") raised by New-ItemProperty at steps/_registry.ps1:48, caught and rethrown with the friendly message at steps/_registry.ps1:50-52.

Re-running simply reproduces the identical failure, so Full can never advance past Phase 5 on this build.

Root cause

Windows on this build protects the SearchSettings key against value writes, independent of ACLs. The key is owned by the user and its ACL grants the user, SYSTEM and Administrators KEY_ALL_ACCESS (KA), with no Deny ACE — yet every value write is refused.

Note the key carries an explicit ACE for a MicrosoftWindows.Client.CBS AppContainer SID (S-1-15-3-1024-1086922356-207614091-3724853071-841836187-4018695103-34218837-3164163255-155871754), which is the search/taskbar package (SearchHost.exe runs from MicrosoftWindows.Client.CBS_cw5n1h2txyewy).

Methods attempted, all failing
Method Result
New-ItemProperty (PowerShell, elevated) Access is denied
reg.exe add HKCU\...\SearchSettings /v IsDynamicSearchBoxEnabled /t REG_DWORD /d 0 /f ERROR: Access is denied.
[Microsoft.Win32.RegistryKey]::SetValue() via OpenSubKey($true) Attempted to perform an unauthorized operation.
Rewrote the key ACL (removed the AppContainer ACE, granted the current user explicit FullControl) ACL change succeeded, write still failed
Stopped WSearch service and killed SearchHost.exe write still failed
Wrote a different, brand-new value name in the same key failed
Modified an existing value (WebSearchInstalledVersion) failed
Created a new subkey succeeded (so it is specifically value writes that are blocked)
Wrote HKLM\SOFTWARE\Policies\Microsoft\Windows\Windows Search succeeded (proves elevation is fine)
Wrote HKCU\...\Explorer\Advanced succeeded (proves general HKCU writes are fine)

SearchSettings has no policy mirror on this build (HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\SearchSettings does not exist), so there is no supported policy-based way to set this value either.

Expected result

Either of:

  1. SearchHighlightOff should be marked BestEffort = $true, like the WidgetServiceOff step in the very same file, so a platform-protected cosmetic setting cannot abort the whole run; or
  2. If the value is genuinely un-writable on current builds, the step should be removed or its apply-path changed to a supported API.

Suggested fix

In windows-dev-config/steps/registry-taskbar-search.ps1, the file already acknowledges this exact class of problem for Widgets:

# Windows may protect the Widgets policy even from an administrator.
@{
    Name        = 'WidgetServiceOff'
    KeyPath     = 'HKLM\SOFTWARE\Policies\Microsoft\Dsh'
    ValueName   = 'AllowNewsAndInterests'
    Value       = 0
    Description = 'Disable Widgets'
    BestEffort  = $true
}

The SearchHighlightOff tweak immediately above it has the same exposure but lacks the flag:

@{
    Name        = 'SearchHighlightOff'
    KeyPath     = 'HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\SearchSettings'
    ValueName   = 'IsDynamicSearchBoxEnabled'
    Value       = 0
    Description = 'Disable Show search highlights'
}

Adding BestEffort = $true (or removing the tweak) would let Full continue on builds where Windows protects this key.

Additional notes

  • Verified against the current main: steps/registry-taskbar-search.ps1 is byte-identical to the copy setup installed, so the issue is present in the latest code.
  • Related prior report: #109 ("Disable Widget service errors on fresh Windows 11 PC") — the same class of failure, which is presumably why WidgetServiceOff was given BestEffort. SearchHighlightOff appears to have been missed.
  • No existing issue appears to cover IsDynamicSearchBoxEnabled / SearchSettings specifically.
主要语言
PowerShell
星标
2.2k
派生
168
平均合并
6 小时 48 分钟
30 天内合并 PR
12

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/WindowsDeveloperConfig 的其他 Issue

查看 microsoft/WindowsDeveloperConfig 的全部 Issue

相似的 Issue

更多 Operating Systems Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。