Windows Search – Error 21

Si tras intentar reparar el servicio, ejecutar «msdt.exe -ep WindowsHelp id SearchDiagnostic» sigue apareciendo el error del tipo «El dispositivo no está listo» / «The device is not ready» debemos revisar las rutas correspondientes al servicio de búsquedas integradas en el registro de Windows.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search

El valor por defecto de las claves DataDirectory y DefaultDataDirectory es: «%ProgramData%\Microsoft\Search\Data\». Esta carpeta debe existir y estar accesible.

En las últimas versiones de Windows 10 (> 10.0.19042.964) debemos revisar igualmente las claves «DefaultApplicationsPath» y «TempPath»

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\Gathering Manager

El directorio de la ruta final del directorio temporal puede variar según el equipo/usuario

Otras referencias:

Programas de inicio en Windows 10

En ocasiones algunos programas o malware se resisten a desaparecer de la pestaña «Inicio» del administrador de tareas, tienen donde esconderse.
Deberemos revisar el el registro de Windows (regedit.exe) las siguientes rutas:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run

Y en el explorador de ficheros:
%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
%Appdata%\Microsoft\Windows\Start Menu\Programs\Startup




Identificar \Device\Harddisk# en Windows

Algunos de los registros de eventos de Windows utilizan identificadores internos diferentes, para conocer la relación de posible nombres del objeto al que se refieren:

Podemos utilizar la utilidad WinObj de Sysinternals para obtener la relación, desde la carpeta «Device»:

O desde la carpeta «GLOBAL??» ordenando por «Symlink» hasta llegar a los dispositivos de disco duro en «\Device\Harddisk…»

Mediante Powershell, donde el DeviceID corresponde con HardDisk#

Get-PhysicalDisk | Select -Prop DeviceId,FriendlyName,SerialNumber

En el registro de Windows dentro la clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\disk\Enum

Mediante el listado de drivers instalados:

wmic /output:c:\drivers.txt path Win32_PnPSignedDriver

 

Activar escritorio remoto mediante Powershell

Por defecto la conexión por escritorio remoto aparece deshabilitada en los equipos con Windows Pro, en una red de dominio es posible establecer mediante políticas de grupo los permisos necesarios:

– Configuración de Equipo \ Directivas \ Plantillas Administrativas
— Componentes de Windows \ Servicios de escritorio remoto \ Host de sesión de Escritorio remoto \ Conexiones \ Permitir que los usuarios se conecten de forma remota mediante Servicios de Escritorio Remoto

— Red \ Conexiones de red \ Firewall de Windows \ Perfil de dominio \ Firewall de Windows: permitir excepciones de Escritorio remoto entrantes

Igualmente podemos echar mano de un Script para powershell escrito por Sitaram Pamarthi en 2013, que mediante WMI nos facilita acciones puntuales:

[cmdletbinding()]
param(
	[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
	[string[]]$ComputerName = $env:computername,
	[ValidateScript({Test-Path $_})]
	[string]$OutFolder = "c:\"
)

begin {
$SuccessComps = Join-Path $OutFolder "Successcomps.txt"
$FailedComps = Join-Path $OutFolder "FailedComps.txt"
}

process {
	foreach($Computer in $ComputerName) {

		try {
			$RDP = Get-WmiObject -Class Win32_TerminalServiceSetting `
								-Namespace root\CIMV2\TerminalServices `
								-Computer $Computer `
								-Authentication 6 `
								-ErrorAction Stop
								
		} catch {
			Write-Host "$Computer : WMIQueryFailed"
			"$Computer : WMIQueryFailed" | Out-File -FilePath $FailedComps -Append
			continue
		}
		
		if($RDP.AllowTSConnections -eq 1) {
			Write-Host "$Computer : RDP Already Enabled"
			"$Computer : RDP Already Enabled" | Out-File -FilePath $SuccessComps -Append
			continue
		} else {
			try {
				$result = $RDP.SetAllowTsConnections(1,1)
				if($result.ReturnValue -eq 0) {
					Write-Host "$Computer : Enabled RDP Successfully"
					"$Computer : RDP Enabled Successfully" | Out-File -FilePath $SuccessComps -Append
				} else {
					Write-Host "$Computer : Failed to enabled RDP"
					"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append

				}
			
			} catch {
				Write-Host "$computer : Failed to enabled RDP"
				"$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append
			}
		}
	}

}

end {}

Su utilización para un equipo concreto:

.\Enable-RDPAccess.ps1 -ComputerName <computer name>

 Si obtenemos errores al ejectuarlo, debemos comprobar que tenemos acceso mediante WMI o activarlo mediante GPO:

– Configuración del equipo \ Directivas \ Configuración de Windows \ Configuración de seguridad \ Firewall de Windows con seguridad avanzada \ Reglas de Entrada

No se pudo actualizar la partición reservada del sistema

Microsoft ha simplificado, cada vez más, las actualizaciones y migraciones a Windows 10 desde el año 2015, pero en ocasiones es necesario acciones específicas. En este caso el error que nos aparece al utilizar la herramienta de actualización es el siguiente: «No se pudo actualizar la partición reservada del sistema«

Leer más