Windows 10 Pro:“Cortana 已被公司政策禁用”

Windows 10 Pro:“Cortana 已被公司政策禁用”

..我想我知道为什么。早些时候,我听信了“Windows 10 是间谍软件!!”的说法,并运行了一些随机工具,这些工具显然损坏了我系统的各个部分。

我现在正尝试恢复那些损坏的部分,从 Cortana 开始。

点击任务栏搜索图标,然后点击齿轮,屏幕会显示“Cortana 已被公司政策禁用”。一些阅读资料发现了一些会导致该功能被禁用的原因,但我已经检查了所有原因:

  • 禁用 Cortana 的组策略管理模板。此项设置为“未配置”。

  • 注册表黑客在 HKLM/SOFTWARE/Policies/Microsoft/Windows/Windows Search 下放置了 AllowCortana = 0 项。不存在这样的项。

  • 安装了错误的语言文件。我只有英语,而且我在美国,使用英语区域设置。

  • 遥测已关闭-我处于内部程序中,因此它对我来说设置为完整。

为了好玩,我做了一个sfc /scannow,当然,什么也没发现。

我该如何消除此工具对我的系统造成的损害并恢复 Cortana?

答案1

  1. 确保您没有在 Outlook 中设置任何 Exchange 帐户。
  2. 运行此 powershell 脚本。

完毕。

# Needs to run as administrator
If ( -not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
        Start-Process powershell -Verb runAs -ArgumentList $arguments
        Break
}

# Installs cortana (and friends)

Get-AppXPackage -AllUsers | ForEach { Add-AppXPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }

# Set registry keys properly
# taken from `http://stackoverflow.com/a/5652674/850326`
Function Test-RegistryValue {
    param(
        [Alias("PSPath")]
        [Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [String]$Path
        ,
        [Parameter(Position = 1, Mandatory = $true)]
        [String]$Name
        ,
        [Switch]$PassThru
    )

    process {
        if (Test-Path $Path) {
            $Key = Get-Item -LiteralPath $Path
            if ($Key.GetValue($Name, $null) -ne $null) {
                if ($PassThru) {
                    Get-ItemProperty $Path $Name
                } else {
                    $true
                }
            } else {
                $false
            }
        } else {
            $false
        }
    }
}

Function Set-RegistryValue {
    param(
        [Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [String]$Path
        ,
        [Parameter(Position = 1, Mandatory = $true)]
        [String]$Name
        ,
        [Parameter(Position = 2, Mandatory = $true)]
        [String]$Value
    )

    If (-not (Test-Path $Path))
    {
        New-Item -Path "$Path" -Force | Out-Null

    }

    if (-not (Test-RegistryValue -Path "$Path" -Name "$Name"))
    {
        New-ItemProperty -Path "$Path" -Name "$Name" -Value "$Value"
    }
    else
    {
        Set-ItemProperty -Path "$Path" -Name "$Name" -Value "$Value"
    }
}

# Fix allow cortana key

$allowCortanaPath = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Windows Search"
$allowCortanaName = "AllowCortana"
$allowCortanaValue = "1"

Set-RegistryValue -Path "$allowCortanaPath" -Name "$allowCortanaName" -Value "$allowCortanaValue"

# Fix allow telemetry key

$allowTelemetryPath = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DataCollection"
$allowTelemetryName = "AllowTelemetry"
# The following value sets "AllowTelemetry" to "Full"
$allowTelemetryValue = "3"

Set-RegistryValue -Path "$allowTelemetryPath" -Name "$allowTelemetryName" -Value "$allowTelemetryValue"

# Restart explorer to see changes

Stop-Process -name explorer

相关内容