Jump to content

Reg Key Export employing variables


Go to solution Solved by Marc,

Recommended Posts

Posted (edited)

Good day,

I have managed - with great difficulty, in employing variables with Arrays. A couple of "things"...

; ------------------------------------------------
#include <FileConstants.au3>
; ------------------------------------------------
Opt("MustDeclareVars", 1)
; -------------------------------------------------
_ExportRegKeys()
; -------------------------------------------------
Func _ExportRegKeys()
    ; Source data
    Local $_sRegKey[3] = [2]
    $_sRegKey[1] = "HKEY_CURRENT_USER\Software\Native Instruments"
    $_sRegKey[2] = "HKEY_LOCAL_MACHINE\Software\Native Instruments"
    ; -----------------
    ; Destination data
    Local $_RegFile[3] = [2]
    $_RegFile[1] = "D:\Install\App_Config\Digital_Audio\2_GR5\Data\Reg_Keys\hkcu.reg"
    $_RegFile[2] = "D:\Install\App_Config\Digital_Audio\2_GR5\Data\Reg_Keys\hklm.reg"
    ; -------------------------------------------------
    Local $sMessage = "Export Registry Keys data..." & @CRLF & @CRLF
    ; -------------------------------------------------
    For $i = 1 To $_RegFile[0]
        Local $Result = ShellExecuteWait('REG', 'EXPORT " ' & $_sRegKey[$i] & '" ' & $_RegFile[$i] & '')
        Switch $Result
            Case 0
                $Result = "The Registry Keys data...[" & $_RegFile[$i] & "]...was exported sucessfully!"
            Case 1
                $Result = "The Registry Keys data...[" & $_RegFile[$i] & "]...was not exported sucessfully!"
        EndSwitch
        ; -----------------
        $sMessage &= $Result & @CRLF
    Next
    ; -----------------------------------------------
    $sMessage &= @CRLF & "Export Registry Keys completed..." & @CRLF
    ; -----------------------------------------------
    SplashTextOn("NOTICE!!", $sMessage, 1050, 170, -1, -1, 4, "FuturaBQ-DemiBold", 14)
    Sleep(3000)
    SplashOff()
EndFunc   ;==>_ExportRegKeys
; -------------------------------------------------

Thing #1: How can the addition of "& '" /Y')" be employed in the above with the "ShellExecuteWrite" command?
• I have attempted numerous insertion points with no success!

Thing #2: Is the above script "sound"?

Thank you for any assistance that one may provide.

Edited by mr-es335
More claficiation required.
Posted

Hi, mr-es335,

to #1: I like to see the created command, so I extracted the parameters in a separate variable and wrote it to console. Makes it more visible to see what actually happens.

Works quite fine this way. even with /y:

Local $tmp = 'EXPORT "' & $_sRegKey[$i] & '" "' & $_RegFile[$i] & '" /Y'
Local $Result = ShellExecuteWait('REG', $tmp)
ConsoleWrite($tmp & @CRLF)

to #2:

Looks quite stable to me.

best regards,
Marc

Any of my own codes posted on the forum are free for use by others without any restriction of any kind. (WTFPL)

Posted

Marc,

Thanks for the reply...appreciated...However the above example does not really help me at all.

I simply want to changes this:

;reg export <keyname> <filename> [/y]
ShellExecuteWait(REG, EXPORT "HKEY_CURRENT_USER\Software\Native Instruments" "E:\Desktop\Test\test.reg" /y)

...to this...

Local $_Keyname = "HKEY_CURRENT_USER\Software\Native Instruments"
Local $_DstFile = "E:\Desktop\Test\hkcu.reg"

;reg export <keyname> <filename> [/y]
ShellExecuteWait(REG, EXPORT $_Keyname $_DstFile /y)

 

  • Solution
Posted (edited)

If I'm not mistaken, that's just what the code does... If you replace the line

Local $Result = ShellExecuteWait('REG', 'EXPORT " ' & $_sRegKey[$i] & '" ' & $_RegFile[$i] & '')

with my code, you'll get:

; ------------------------------------------------
#include <FileConstants.au3>
; ------------------------------------------------
Opt("MustDeclareVars", 1)
; -------------------------------------------------
_ExportRegKeys()
; -------------------------------------------------
Func _ExportRegKeys()
    ; Source data
    Local $_sRegKey[3] = [2]
    $_sRegKey[1] = "HKEY_CURRENT_USER\Software\Native Instruments"
    $_sRegKey[2] = "HKEY_LOCAL_MACHINE\Software\Native Instruments"
    ; -----------------
    ; Destination data
    Local $_RegFile[3] = [2]
    $_RegFile[1] = "D:\Install\App_Config\Digital_Audio\2_GR5\Data\Reg_Keys\hkcu.reg"
    $_RegFile[2] = "D:\Install\App_Config\Digital_Audio\2_GR5\Data\Reg_Keys\hklm.reg"
    ; -------------------------------------------------
    Local $sMessage = "Export Registry Keys data..." & @CRLF & @CRLF
    ; -------------------------------------------------
    For $i = 1 To $_RegFile[0]
        Local $tmp = 'EXPORT "' & $_sRegKey[$i] & '" "' & $_RegFile[$i] & '" /Y'
        Local $Result = ShellExecuteWait('REG', $tmp)
        ConsoleWrite($tmp & @CRLF)
        Switch $Result
            Case 0
                $Result = "The Registry Keys data...[" & $_RegFile[$i] & "]...was exported sucessfully!"
            Case 1
                $Result = "The Registry Keys data...[" & $_RegFile[$i] & "]...was not exported sucessfully!"
        EndSwitch
        ; -----------------
        $sMessage &= $Result & @CRLF
    Next
    ; -----------------------------------------------
    $sMessage &= @CRLF & "Export Registry Keys completed..." & @CRLF
    ; -----------------------------------------------
    SplashTextOn("NOTICE!!", $sMessage, 1050, 170, -1, -1, 4, "FuturaBQ-DemiBold", 14)
    Sleep(3000)
    SplashOff()
EndFunc   ;==>_ExportRegKeys
; -------------------------------------------------

and it seems to work fine. It displays the "successfully" message and two .reg files are created at the given location. And it uses the /y because it overwrites the files without asking if they are already there.

¯\_(ツ)_/¯

best regards,
Marc

Edited by Marc

Any of my own codes posted on the forum are free for use by others without any restriction of any kind. (WTFPL)

Posted (edited)

Marc,

Okay! This is great! works as expected!!

However, may I ask where you gleaned the information to know precisely how to format the syntax?
 

; Mine...works, but asks for confirmation to overwrite the exisiting data.
ShellExecuteWait('REG', 'EXPORT " ' & $_sRegKey[$i] & '" ' & $_RegFile[$i] & '')

; Your...works, and does not asks for confirmation to overwrite the exisiting data.
ShellExecuteWait('REG', 'EXPORT "' & $_sRegKey[$i] & '" "' & $_RegFile[$i] & '" /Y')

Comparing the syntax I found with yours

 

Example.png

Edited by mr-es335
Posted

Well I just thought „how should the command look like if entered on the command line“ and came tobte conclusion of „out every Parameter in „“ and to be sure it is correct I added the consolewrite to see the result🙃 

Any of my own codes posted on the forum are free for use by others without any restriction of any kind. (WTFPL)

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
  • Recently Browsing   0 members

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