es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“Get-ChildItem “REGISTRY::$path” está bloqueando mi clave de registro.”

Estoy utilizando la API de Windows no administrada “RegLoadKey” en PowerShell para montar archivos de registro sin conexión.

Eso funciona bien, y fuera de PowerShell todo funciona como se espera: una vez montados, puedo navegar hasta ellos en regedit.exe y manipularlos, y así sucesivamente.

Sin embargo, si utilizo Get-ChildItem, ya no puedo desmontar el archivo de registro. RegUnloadKey devuelve un valor de 5 que significa “Acceso denegado”. Esto NO sucede si simplemente no toco la clave del registro desde dentro de PowerShell.

El código es muy simple, puedo replicarlo de esta manera:

Add-Type -Name LoadHive -Namespace RegistryHelper -MemberDefinition @"
[DllImport("advapi32.dll", SetLastError = true)]
public static extern Int32 RegLoadKey(UInt32 hKey, String lpSubKey, String lpFile);

[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern Int32 RegUnLoadKey(UInt32 hKey, string lpSubKey);
"@

$hiveMountPoint = 2147483651 (Este es la constante integrada para HKEY_USERS)
$hiveMountName = "TEMP-HIVE"
$hivePath = [Ruta de archivo hacia el archivo de registro sin conexión]
[RegistryHelper.LoadHive]::RegLoadKey($hiveMountPoint, $hiveMountName, $hivePath)

$hiveKeys = Get-ChildItem "REGISTRY::HKEY_USERS\TEMP-HIVE" 

[RegistryHelper.LoadHive]::RegUnLoadKey($hiveMountPoint, $hiveMountName)

Estoy utilizando “RegUnLoadKey” para desmontar. ¿Alguien puede explicarme por qué Get-ChildItem me está bloqueando aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Problema con RegUnloadKey después de usar Get-ChildItem en PowerShell

    Un experto en TI especializado en Windows, PowerShell, WinAPI y registro ha informado un problema al utilizar RegUnloadKey para desmontar registros sin conexión en PowerShell. El experto está utilizando la API no administrada de Windows RegLoadKey para montar los registros sin conexión, lo cual funciona bien hasta que utiliza Get-ChildItem. Después de eso, RegUnloadKey devuelve un valor de “Acceso denegado” de 5, lo cual impide el desmontaje del registro. Este problema no ocurre si el experto no modifica la clave del registro desde PowerShell.

    El experto ha proporcionado un código de ejemplo sencillo para replicar el problema, utilizando Add-Type para cargar las funciones RegLoadKey y RegUnloadKey desde advapi32.dll, una constante para HKEY_USERS, un nombre de montaje para el registro temporal, la ruta de acceso al registro sin conexión y el cmdlet Get-ChildItem para acceder al registro montado. El experto está llamando a RegUnloadKey para desmontar el registro, pero aquí es donde surge el problema de “Acceso denegado”.

    El experto está solicitando información sobre por qué Get-ChildItem les bloquea y evita que el desmontaje del registro se realice correctamente con RegUnloadKey.

Comments are closed.