script - Problema de lectura del registro VBS Windows 64bit/32bit
script modificar registro windows (2)
Lo resolví usando esta pieza de código.
Const HKEY_LOCAL_MACHINE = &H80000002
sPath = ReadRegStr (HKEY_LOCAL_MACHINE, "SOFTWARE/Microsoft/ASP.NET/2.0.50727.0", "Path", 64)
WScript.Echo sPath
'' Reads a REG_SZ value from the local computer''s registry using WMI.
'' Parameters:
'' RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values).
'' Key - The key that contains the desired value.
'' Value - The value that you want to get.
'' RegType - The registry bitness: 32 or 64.
''
Function ReadRegStr (RootKey, Key, Value, RegType)
Dim oCtx, oLocator, oReg, oInParams, oOutParams
Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
oCtx.Add "__ProviderArchitecture", RegType
Set oLocator = CreateObject("Wbemscripting.SWbemLocator")
Set oReg = oLocator.ConnectServer("", "root/default", "", "", , , , oCtx).Get("StdRegProv")
Set oInParams = oReg.Methods_("GetStringValue").InParameters
oInParams.hDefKey = RootKey
oInParams.sSubKeyName = Key
oInParams.sValueName = Value
Set oOutParams = oReg.ExecMethod_("GetStringValue", oInParams, , oCtx)
ReadRegStr = oOutParams.sValue
End Function
¡Gracias Helen por tu ayuda!
Lo que estoy tratando de lograr creo que debería ser bastante simple pero me está volviendo loco.
Antecedentes: ejecutamos un sistema de herramientas de monitoreo entre nuestros clientes que tiene la capacidad de ejecutar scripts .vbs de forma remota. Esto funciona muy bien normalmente.
Lo que estoy tratando de lograr actualmente es poder leer una línea del registro en ambas versiones de 32 bits de Windows y versiones de 64 bits.
El Client side.exe que monitorea la máquina se ejecuta como un proceso de 32 bits en AMBAS plataformas (este es el truco).
Quiero leer una clave de HKEY_LOCAL_MACHINE / SOFTWARE / por ejemplo. Mi script funciona perfectamente bien en 32 bits. ejemplo: objRegistry.RegRead ("HKEY_LOCAL_MACHINE / Software / anything")
El problema que tengo es cuando ejecuto esta misma línea en una carpeta de 64 bits que se busca automáticamente en la carpeta wow64node. Ejemplo: objRegistry.RegRead ("HKEY_LOCAL_MACHINE / Software / wow64node /").
Necesito que lo comprueben EXACTAMENTE en el mismo lugar.
La clave que está leyendo forma parte de un programa que ejecuta versiones de 32 bits y de 64 bits, por lo que no está instalada en la carpeta wow64node.
En este punto, no puedo ejecutar el script .VBS como un proceso de 64 bits que resolvería mi problema por completo, ya que no se vería en la carpeta wow64node.
Si alguien tiene alguna idea, por favor avíseme.
En lugar de WshShell.RegRead
, use la clase WMI StdRegProv
: le permite especificar si desea leer desde el registro de 32 bits o de 64 bits. Consulte este artículo de MSDN para obtener más información y ejemplos: