Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Read remote registry in script

453 views
Skip to first unread message

Peter

unread,
Oct 15, 2009, 11:43:38 AM10/15/09
to
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

Richard Mueller [MVP]

unread,
Oct 15, 2009, 2:18:22 PM10/15/09
to
Peter wrote:

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
--


Peter

unread,
Oct 21, 2009, 10:55:01 PM10/21/09
to
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:

> .
>

0 new messages