Windows 10 搜索不起作用 - SearchUI.exe 丢失

mez*_*ker 8 search windows-search windows-10

当我尝试访问 Windows 10 搜索功能时(通过单击任务栏中的栏或开始在开始菜单中键入),没有任何反应;搜索“窗口”不会弹出。

我自己调查了一下,发现有几点可能会导致这个问题:

  • 我使用SpyBot Anti-Beacon来阻止 Windows(和 Cortana)访问 Bing 和遥测网站。即使撤消该程序所做的所有更改并重新启动计算机,也看不到任何更改。
  • 一些组策略经过修改gpedit.msc,影响 Cortana 和 Windows 搜索。将这些策略重置为默认值(“未配置”)并重新启动后,没有明显的变化。
  • Cortana 所在的目录C:\Windows\SystemApps不存在。这也意味着命名的文件SearchUI.exe不存在,因为它应该包含在该文件夹中。任务管理器既不显示SearchUI.exeCortana的运行进程,也不显示 Cortana的运行进程。尝试使用以下命令在提升的 PowerShell 实例中重新安装所有出厂设置的系统应用程序时

    Get-AppXPackage | Foreach {Add-AppXPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"
    
    Run Code Online (Sandbox Code Playgroud)

    (在此处找到)重新安装了除 Cortana 之外的所有应用程序。执行时Get-AppXPackage *cortana*,没有找到或输出包,但例如Get-AppXPackage *edge*产生结果。

我想关键错误是SearchUI.exe(实际上,整个剩余的 Cortana 目录)从系统中丢失了。即使在运行 Windows 更新并安装所有可用更新后,问题仍然存在。

有什么办法可以将搜索功能恢复到应有的状态吗?

操作系统: Windows 10 Pro x64(内部版本 14393.187)

小智 5

Microsoft 提供了一种通过 powershell 脚本重置 Windows 搜索的解决方案,以及在此处“重置 Windows 搜索”下找到的一组步骤。我在下面包含了 powershell 脚本“ResetWindowsSearchBox.ps1”的步骤和内容。

如果安装了 Windows 10 May 2019 更新或更高版本的更新,请使用 Windows PowerShell 重置 Windows 搜索。为此,请按照下列步骤操作。

注意您必须具有管理员权限才能运行此脚本。

  1. 单击下载按钮并将ResetWindowsSearchBox.ps1保存到本地文件夹。
  2. 右键单击您保存的文件,然后选择使用 PowerShell 运行。
  3. 如果系统询问您“是否要允许此应用对您的设备进行更改?”,请选择是。
  4. PowerShell 脚本会重置 Windows 搜索功能。当出现“完成”一词时,关闭 PowerShell 窗口。
  5. 如果您收到“无法加载,因为在此系统上禁用了运行脚本”错误消息,请在 PowerShell 窗口的命令行中输入以下命令,然后按 Enter:

    Get-ExecutionPolicy

    注意当前策略出现在窗口中。例如,您可能会看到受限。我们建议您记下此值,因为您以后必须使用它。

  6. 在 PowerShell 窗口的命令行中输入以下命令,然后按 Enter:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

    注意您将收到一条警告消息,解释执行策略更改的安全风险。按 Y,然后按 Enter 接受更改。要了解有关 PowerShell 执行策略的更多信息,请参阅关于执行策略

  7. 策略更改完成后,关闭窗口,然后重复步骤 2-4。但是,当这次出现“完成”消息时,请勿关闭 PowerShell 窗口。而是按任意键继续。
  8. 恢复到之前的 PowerShell 执行策略设置。为此,请在 PowerShell 窗口的命令行上输入以下命令,按空格键,输入您在步骤 5 中记下的策略值,然后按 Enter:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy

    例如,如果您在第 5 步中记下的策略是 Restricted,则该命令将类似于以下内容:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Restricted

    注意您将收到一条警告消息,解释执行策略更改的安全风险。按 Y,然后按 Enter 接受更改并恢复到以前的策略设置。

  9. 关闭 PowerShell 窗口。

[10. 重启电脑]¹

注意如果您的组织已禁用运行脚本的功能,请联系您的管理员寻求帮助。

¹ 添加了第 10 步,因为此修复在我重新启动后才生效。

重置WindowsSearchBox.ps1

# Copyright © 2019, Microsoft Corporation. All rights reserved.

function T-R
{
    [CmdletBinding()]
    Param(
        [String] $n
    )

    $o = Get-Item -LiteralPath $n -ErrorAction SilentlyContinue
    return ($o -ne $null)
}

function R-R
{
    [CmdletBinding()]
    Param(
        [String] $l
    )

    $m = T-R $l
    if ($m) {
        Remove-Item -Path $l -Recurse -ErrorAction SilentlyContinue
    }
}

function S-D {
    R-R "HKLM:\SOFTWARE\Microsoft\Cortana\Testability"
    R-R "HKLM:\SOFTWARE\Microsoft\Search\Testability"
}

function K-P {
    [CmdletBinding()]
    Param(
        [String] $g
    )

    $h = Get-Process $g -ErrorAction SilentlyContinue

    $i = $(get-date).AddSeconds(2)
    $k = $(get-date)

    while ((($i - $k) -gt 0) -and $h) {
        $k = $(get-date)

        $h = Get-Process $g -ErrorAction SilentlyContinue
        if ($h) {
            $h.CloseMainWindow() | Out-Null
            Stop-Process -Id $h.Id -Force
        }

        $h = Get-Process $g -ErrorAction SilentlyContinue
    }
}

function D-FF {
    [CmdletBinding()]
    Param(
        [string[]] $e
    )

    foreach ($f in $e) {
        if (Test-Path -Path $f) {
            Remove-Item -Recurse -Force $f -ErrorAction SilentlyContinue
        }
    }
}

function D-W {

    $d = @("$Env:localappdata\Packages\Microsoft.Cortana_8wekyb3d8bbwe\AC\AppCache",
        "$Env:localappdata\Packages\Microsoft.Cortana_8wekyb3d8bbwe\AC\INetCache",
        "$Env:localappdata\Packages\Microsoft.Cortana_8wekyb3d8bbwe\AC\INetCookies",
        "$Env:localappdata\Packages\Microsoft.Cortana_8wekyb3d8bbwe\AC\INetHistory",
        "$Env:localappdata\Packages\Microsoft.Windows.Cortana_cw5n1h2txyewy\AC\AppCache",
        "$Env:localappdata\Packages\Microsoft.Windows.Cortana_cw5n1h2txyewy\AC\INetCache",
        "$Env:localappdata\Packages\Microsoft.Windows.Cortana_cw5n1h2txyewy\AC\INetCookies",
        "$Env:localappdata\Packages\Microsoft.Windows.Cortana_cw5n1h2txyewy\AC\INetHistory",
        "$Env:localappdata\Packages\Microsoft.Search_8wekyb3d8bbwe\AC\AppCache",
        "$Env:localappdata\Packages\Microsoft.Search_8wekyb3d8bbwe\AC\INetCache",
        "$Env:localappdata\Packages\Microsoft.Search_8wekyb3d8bbwe\AC\INetCookies",
        "$Env:localappdata\Packages\Microsoft.Search_8wekyb3d8bbwe\AC\INetHistory",
        "$Env:localappdata\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\AC\AppCache",
        "$Env:localappdata\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\AC\INetCache",
        "$Env:localappdata\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\AC\INetCookies",
        "$Env:localappdata\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\AC\INetHistory")

    D-FF $d
}

function R-L {
    [CmdletBinding()]
    Param(
        [String] $c
    )

    K-P $c 2>&1 | out-null
    D-W # 2>&1 | out-null
    K-P $c 2>&1 | out-null

    Start-Sleep -s 5
}

function D-E {
    Write-Host "Press any key to continue..."
    $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
}

Write-Output "Verifying that the script is running elevated"
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
 if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
  $Cx = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
  Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList "-noexit",$Cx
  Exit
 }
}

$a = "searchui"
$b = "$Env:localappdata\Packages\Microsoft.Windows.Search_cw5n1h2txyewy"
if (Test-Path -Path $b) {
    $a = "searchapp"
} 


Write-Output "Resetting Windows Search Box"
S-D 2>&1 | out-null
R-L $a

Write-Output "Done..."
D-E
Run Code Online (Sandbox Code Playgroud)


mez*_*ker 4

我设法通过运行 Windows 10 安装程序来恢复搜索功能,该安装程序可以通过 Microsoft 的媒体创建工具下载,该工具可以从该网站获取。正如这篇 Reddit 帖子中也提到的,在运行该设置之前创建一个系统还原点,以防过程中出现任何问题。与其遗憾,不如安全。

我恢复系统的步骤是:

  1. 下载并运行媒体创建工具
  2. 选择“为另一台电脑创建安装介质”,然后按“下一步”按钮。
  3. 勾选“使用此电脑的推荐选项”复选框(如果尚未勾选),然后按“下一步”按钮。
  4. 选择“ISO 文件”并按“下一步”按钮。
  5. 提供 ISO 文件的保存路径并确认。
  6. 等待下载完成。完成后,转到下载位置。
  7. 右键单击 ISO 文件并按“安装”。Windows 资源管理器应切换到已安装的驱动器,其中包含setup.exe.
  8. 跑步setup.exe
  9. 在继续之前决定是否要下载并安装所有可用的 Windows 更新。就我而言,我决定更新,这也被标记为推荐选项。按“下一步”。
  10. 如果安装程序询问您要保留哪些文件,请选择保留文件和已安装应用程序的选项。
  11. 等待设置完成。在此过程中您的计算机将至少重新启动一次。
  12. (可选)卸载您不想安装的任何预装应用程序。