Windows Vista Forums

Read remote registry in script
  1. #1


    Peter Guest

    Read remote registry in script

    I have a VBS script that needs to read a registry value from remote computers
    on a LAN, my efforts so far have led me to what I show below. It generates an
    error trying to use the GetString method on the ObjWMIService object. A
    little research shows me that this was not a valid method for an object
    returned from the ConnectServer method.
    I use the SWbemLocator.ConnectServer method since the logged in user of the
    remote computers do not have access to registry editing.
    I am stumped as to where to go next, I am sure this is a simple task but I
    am not smart enough to get past this, any thoughts appreciated.



    -------------------- Begin Script---------------
    Option Explicit

    Const HKEY_CURRENT_USER = &H80000001
    Dim StrComputer, StrNameSpace, StrUserName, StrPassword
    Dim StrPath, StrKey, StrValue
    Dim ObjWMIService, ObjWbemLocator


    StrComputer = "Comp01"
    StrNameSpace = "\root\default:StdRegProv"
    StrUserName = "adminuser"
    StrPassword = "correctpassword"

    Set ObjWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set ObjWMIService = objWbemLocator.ConnectServer(StrComputer, _
    StrNameSpace, StrUserName, StrPassword)

    StrKey = "SOFTWARE\Microsoft\Office\11.0\Outlook\Security"
    StrValue = "OutlookSecureTempFolder"
    ObjWMIService.GetStringValue HKEY_CURRENT_USER, StrKey, StrValue, StrPath
    MsgBox StrPath
    -------------------------- End Script --------------------
    --
    Regards - Peter


      My System SpecsSystem Spec

  2. #2


    Richard Mueller [MVP] Guest

    Re: Read remote registry in script

    Peter wrote:

    >I have a VBS script that needs to read a registry value from remote
    >computers
    > on a LAN, my efforts so far have led me to what I show below. It generates
    > an
    > error trying to use the GetString method on the ObjWMIService object. A
    > little research shows me that this was not a valid method for an object
    > returned from the ConnectServer method.
    > I use the SWbemLocator.ConnectServer method since the logged in user of
    > the
    > remote computers do not have access to registry editing.
    > I am stumped as to where to go next, I am sure this is a simple task but I
    > am not smart enough to get past this, any thoughts appreciated.
    >
    > -------------------- Begin Script---------------
    > Option Explicit
    >
    > Const HKEY_CURRENT_USER = &H80000001
    > Dim StrComputer, StrNameSpace, StrUserName, StrPassword
    > Dim StrPath, StrKey, StrValue
    > Dim ObjWMIService, ObjWbemLocator
    >
    >
    > StrComputer = "Comp01"
    > StrNameSpace = "\root\default:StdRegProv"
    > StrUserName = "adminuser"
    > StrPassword = "correctpassword"
    >
    > Set ObjWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    > Set ObjWMIService = objWbemLocator.ConnectServer(StrComputer, _
    > StrNameSpace, StrUserName, StrPassword)
    >
    > StrKey = "SOFTWARE\Microsoft\Office\11.0\Outlook\Security"
    > StrValue = "OutlookSecureTempFolder"
    > ObjWMIService.GetStringValue HKEY_CURRENT_USER, StrKey, StrValue, StrPath
    > MsgBox StrPath
    > -------------------------- End Script --------------------
    > --
    > Regards - Peter
    >
    I can't verify at the moment, but I believe that once you are authenticated
    to the remote computer, you can bind to other objects on the computer with
    the same permissions. For example:
    =======
    Dim objReg

    Set ObjWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set ObjWMIService = objWbemLocator.ConnectServer(StrComputer, _
    StrNameSpace, StrUserName, StrPassword)
    Set objReg = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _
    & strComputer & strNameSpace)

    StrKey = "SOFTWARE\Microsoft\Office\11.0\Outlook\Security"
    StrValue = "OutlookSecureTempFolder"
    objReg.GetStringValue HKEY_CURRENT_USER, StrKey, StrValue, StrPath
    ========
    However, if the computer is remote, I don't think you can access the
    HKEY_CURRENT_USER hive.

    --
    Richard Mueller
    MVP Directory Services
    Hilltop Lab - http://www.rlmueller.net
    --



      My System SpecsSystem Spec

  3. #3


    Peter Guest

    Re: Read remote registry in script

    Richard, thanks for the reply.

    Your idea did indeed prevent the error I was having, but the result returned
    was null which suggests that your closing thoughts about loading the HKCU
    hive from remote machines using VBScript is likely right. Now you mentioned
    it I seem to recall reading something about that in an MS scripting article
    which I cannot seem to find again.

    Thanks again for your help.
    --
    Regards - Peter


    "Richard Mueller [MVP]" wrote:

    > Peter wrote:
    >

    > >I have a VBS script that needs to read a registry value from remote
    > >computers
    > > on a LAN, my efforts so far have led me to what I show below. It generates
    > > an
    > > error trying to use the GetString method on the ObjWMIService object. A
    > > little research shows me that this was not a valid method for an object
    > > returned from the ConnectServer method.
    > > I use the SWbemLocator.ConnectServer method since the logged in user of
    > > the
    > > remote computers do not have access to registry editing.
    > > I am stumped as to where to go next, I am sure this is a simple task but I
    > > am not smart enough to get past this, any thoughts appreciated.
    > >
    > > -------------------- Begin Script---------------
    > > Option Explicit
    > >
    > > Const HKEY_CURRENT_USER = &H80000001
    > > Dim StrComputer, StrNameSpace, StrUserName, StrPassword
    > > Dim StrPath, StrKey, StrValue
    > > Dim ObjWMIService, ObjWbemLocator
    > >
    > >
    > > StrComputer = "Comp01"
    > > StrNameSpace = "\root\default:StdRegProv"
    > > StrUserName = "adminuser"
    > > StrPassword = "correctpassword"
    > >
    > > Set ObjWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    > > Set ObjWMIService = objWbemLocator.ConnectServer(StrComputer, _
    > > StrNameSpace, StrUserName, StrPassword)
    > >
    > > StrKey = "SOFTWARE\Microsoft\Office\11.0\Outlook\Security"
    > > StrValue = "OutlookSecureTempFolder"
    > > ObjWMIService.GetStringValue HKEY_CURRENT_USER, StrKey, StrValue, StrPath
    > > MsgBox StrPath
    > > -------------------------- End Script --------------------
    > > --
    > > Regards - Peter
    > >
    >
    > I can't verify at the moment, but I believe that once you are authenticated
    > to the remote computer, you can bind to other objects on the computer with
    > the same permissions. For example:
    > =======
    > Dim objReg
    >
    > Set ObjWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    > Set ObjWMIService = objWbemLocator.ConnectServer(StrComputer, _
    > StrNameSpace, StrUserName, StrPassword)
    > Set objReg = GetObject("winmgmts:" _
    > & "{impersonationLevel=impersonate,authenticationLevel=Pkt}!\\" _
    > & strComputer & strNameSpace)
    >
    > StrKey = "SOFTWARE\Microsoft\Office\11.0\Outlook\Security"
    > StrValue = "OutlookSecureTempFolder"
    > objReg.GetStringValue HKEY_CURRENT_USER, StrKey, StrValue, StrPath
    > ========
    > However, if the computer is remote, I don't think you can access the
    > HKEY_CURRENT_USER hive.
    >
    > --
    > Richard Mueller
    > MVP Directory Services
    > Hilltop Lab - http://www.rlmueller.net
    > --
    >
    >
    > .
    >

      My System SpecsSystem Spec

Read remote registry in script problems?

Similar Threads
Thread Thread Starter Forum Replies Last Post
read registry key(s) on some remote machines OldDog PowerShell 8 22 Jul 2009
Script: read a registry key Jim VB Script 1 08 Jan 2009
Need to read 64-bit registry from 32-bit RegRead Eric Hill VB Script 0 29 Aug 2008
Re: Printer cannot read registry key? Alan Morris [MSFT] Vista print fax & scan 4 09 Jan 2008
Read from Registry on Vista vovan Vista security 6 21 Feb 2007