Jump to content

Finding value in registry


Go to solution Solved by l3ill,

Recommended Posts

I am querying a group of computers to see if they use a specific homepage for Internet Explorer.  This is located at HKEY_Current_UserSoftwareMicrosoftInternet ExplorerMain and the registry name I believe for IE is "Start Page."  Ideally, if it finds the start page URL that I list in the script, I want it to return an exit code.  Not sure of best way to write it though.

Something like...

If StartPage = xxx, 

return exit code 1

If StartPage = yyy,

return exit code 2

If StartPage = zzz,

return exit code 3

else

return exit code 0

 

Along those lines. Any help is appreciated, I'm sort of stuck  :/

Link to comment
Share on other sites

  • Solution

Hi obfuscatedv

  Welcome to unstuck:

$searchSite = "http://www.autoitscript.com/site/"

$startPage = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main", "Start Page")
ConsoleWrite("$startPage =  " & $startPage & @CRLF)

If $searchSite = $startPage Then
    MsgBox(0, "Success", "Yay it worked")
Else
    MsgBox(0, "Fail", "Different Page")

Endif

Have fun!

Bill

Link to comment
Share on other sites

Super! Glad it worked.

And here it is with the new Ternary syntax ( been wanting to try this on something ) :graduated:

$searchSite = "http://www.autoitscript.com/site/"

$startPage = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main", "Start Page")
ConsoleWrite("$startPage =  " & $startPage & @CRLF)

MsgBox(0, "Ternary", ($searchSite = $startPage) ? "Yay it worked" : "Different Page")
Link to comment
Share on other sites

You can script the query, locally like this...requires you to first map the external system...you would need to parse the output:

#include <Constants.au3>
Local $sPage
$ip = "Your IP"
$user = "domain\user"
$password = "password"
RunWait(@ComSpec & " /c net use \\" & $ip & "\c$ /USER:" &  $user & " " & $password,"",@SW_HIDE)
$iPID = Run(@ComSpec & " /c reg query ""\\" & $ip & "\HKLM\Software\Microsoft\Internet Explorer\main"" /v ""start page""","",@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($iPID)
    If @error Then ExitLoop
    If $line Then ConsoleWrite($line & @CRLF)
WEnd
While 1
    $line = StderrRead($iPID)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
WEnd
RunWait(@ComSpec & " /c net use \\" & $ip & "\c$ /delete","",@SW_HIDE)

Even better, this will output just the page:

$iPID = Run(@ComSpec & " /c for /f ""tokens=4"" %a in ('reg query ""\\172.27.101.12\HKLM\Software\Microsoft\Internet Explorer\main"" /v ""start page""') Do echo %a","",@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)

Using the above to output just the page to variable = $sPage:

#include <Constants.au3>
Local $sPage
$ip = "Your IP"
$user = "domain\user"
$password = "password"
RunWait(@ComSpec & " /c net use \\" & $ip & "\c$ /USER:" &  $user & " " & $password,"",@SW_HIDE)
;~ $iPID = Run(@ComSpec & " /c reg query ""\\" & $ip & "\HKLM\Software\Microsoft\Internet Explorer\main"" /v ""start page""","",@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
$iPID = Run(@ComSpec & " /c echo off & for /f ""tokens=4"" %a in ('reg query ""\\" & $ip & "\HKLM\Software\Microsoft\Internet Explorer\main"" /v ""start page""') Do echo %a","",@SW_HIDE,$STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($iPID)
    If @error Then ExitLoop
    If $line Then $sPage = StringRegExpReplace($line,"[\r\n]+","")
WEnd

ConsoleWrite($sPage & @CRLF)
While 1
    $line = StderrRead($iPID)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
WEnd
RunWait(@ComSpec & " /c net use \\" & $ip & "\c$ /delete","",@SW_HIDE)

Then, just loop through all your stations, you can run anywhere...the For loop is kind of 'dumb' if there is a " " in the page, it will not return the whole thing...luckily, i think spaces are turned int %20, or something like that.

Using just AutoIT function (even easier):

$ip = "IPOfComp"
$user = "Domain\User" ; If user is a local user, and not domain, then "\user"
$password = "password"

If DriveMapAdd("","\\" & $ip & "\c$",0,$user,$password) Then
    ConsoleWrite(RegRead("\\" & $ip & "\HKLM\Software\Microsoft\Internet Explorer\main","start page") & @CRLF)
    DriveMapDel("\\" & $ip & "\c$")
Else
    ConsoleWrite("Unable to map drive " & @extended & @CRLF)
EndIf
Edited by jdelaney
IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
Link to comment
Share on other sites

Here is a way you can get all the user start pages for all profiles on a PC.  It uses the very nice >HKCUReg UDF.

#include <HKCUReg.au3>
#include <Array.au3>

Global $sSearchSite = "http://www.autoitscript.com/site/"
Global $aUsersStartPage = _GetIEStartPageAllUsers("COMPUTERNAME")

For $i = 0 To UBound($aUsersStartPage) - 1 Step 1
    If $aUsersStartPage[$i][1] = $sSearchSite Then 
        ConsoleWrite($aUsersStartPage[$i][0] & " has the correct page." & @LF)
    Else
        ConsoleWrite($aUsersStartPage[$i][0] & " has the incorrect page." & @LF)
    EndIf
Next

Func _GetIEStartPageAllUsers($sComputer)
    Local $aStartPage = _HKCU_Read("\\\" & $sComputer & "\Software\Microsoft\Internet Explorer\Main", "Start Page")
;~  _ArrayDisplay($aStartPage, "$aStartPage") ;For testing.
    ReDim $aStartPage[UBound($aStartPage) - 1][UBound($aStartPage, 2) - 2] ;Remove Default profile and non-used columns.
;~  _ArrayDisplay($aStartPage, "$aStartPage") ;For testing.
    _ArrayDelete($aStartPage, 0) ;Remove row count row.
;~  _ArrayDisplay($aStartPage, "$aStartPage") ;For testing.
    Return $aStartPage
EndFunc

Adam

Edited by AdamUL
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...