Jump to content
Sign in to follow this  
gcue

getting registry value with stringregexp

Recommended Posts

gcue

hello.

i am trying to get the registry value from a registry file

Windows Registry Editor Version 5.00

[hkey_current_user\control panel\desktop]

"ScreenSaverIsSecure"="1"

[hkey_current_user\control panel\desktop]

"ScreenSaveTimeOut"="900"

here's what i have but it just outputs the whole line.. how do I isolate the actual value?

$array = StringRegExp($data, '(?i:"ScreenSaverIsSecure"=".")', 1)
_ArrayDisplay($array)

thanks in advance =)

Edited by gcue

Share this post


Link to post
Share on other sites
BrewManNH

If you look at any .reg file, they're set up just like a .ini file, so you could use IniRead to get the values much easier than with a RegExp. You might have to use IniReadSectionNames to be sure that the entry is there, but it shouldn't be hard to do it that way.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
gcue

absolutely brilliant!

many thanks =)

Share this post


Link to post
Share on other sites
gcue

using IniRead to read registry files works great! except when trying to read values that carry over to a new line

"DispFileName"=hex(2):40,00,69,00,65,00,66,00,72,00,61,00,6d,00,65,00,2e,00,64,\

00,6c,00,6c,00,2c,00,2d,00,31,00,37,00,33,00,31,00,35,00,00,00

anyone have a workaround?

Share this post


Link to post
Share on other sites
hannes08

Basically I thing you'll have to check whether your value has a trailing backslash, and then read all the lines until a new value starts...

If StringRight($value, 1) = "\" Then
    _FileReadToArray($file, $array)
    For $i = 1 To $array[0]
        If StringInString($array[$i], '"Searchstring"=' Then
            $value = StringTrimRight(StringTrimLeft($array[$i], StringLen('"Searchstring"=')),1)
            While 1
                $i += 1
                If StringLeft($array[$i],1) <> '"' Then
                    If StringRight($array[$i], 1) = "\" Then
                        $value &= StringTrimRight($array[$i] , 1)
                    Else
                        $value &= $array[$i]
                    EndIf
                Else
                  ExitLoop 2
                EndIf
            Wend
        EndIf
    Next
EndIf

... untested :mellow:

Edited by Hannes123

Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]

Share this post


Link to post
Share on other sites
gcue

thanks hannes =)

i also did it tried it this way:

$line_count = _FileCountLines($reg_file)

$new_data = ""

for $y = 1 to $line_count
    $line = FileReadLine($reg_file, $y)

    if StringRight($line, 1) = "\" Then
        $y += 1
        $line = StringReplace($line, "\", "")
        $next_line = FileReadLine($reg_file, $y)
        $line = $line & StringStripWS($next_line,1)
    EndIf

    $new_data &= $line & @CRLF
Next

FileDelete($reg_file)
FileWrite($reg_file, $new_data)

Share this post


Link to post
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
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.