Jump to content

Recommended Posts

Posted

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

  • Solution
Posted

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

Posted

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")
Posted (edited)

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.
Posted (edited)

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

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
×
×
  • Create New...