Skip to main content

Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

The copy and past Looks not good here is a nother code...

           MOVE     SPACES                 TO     REG-KEY-ERGEBNIS.

           MOVE     SPACES                 TO     KEY-AUFRUF.

 

           STRING   REG-KEY-HAUPTKEY       DELIMITED BY " "

                   X"00"                  DELIMITED BY SIZE

                                           INTO   KEY-AUFRUF

           END-STRING.

 

           MOVE     KEY-AUFRUF             TO     SUBKEY.

 

           CALL WINAPI     REGOPENKEYEX     USING

                               BY VALUE     HKEY

                               BY REFERENCE SUBKEY

                               BY VALUE     0

                               BY VALUE     KEY-QUERY-VALUE

                               BY REFERENCE HKEYRESULT

                               RETURNING   RC

           END-CALL.

 

           MOVE 256                             TO     VALUEDATA-LEN.

           MOVE LOW-Values                     TO     VALUEDATA.

           IF REG-KEY-SUBKEY EQUAL TO SPACES

              MOVE     LOW-Values             TO     VALUENAME

           ELSE

               MOVE     SPACES                 TO     KEY-AUFRUF

               STRING   REG-KEY-SUBKEY   DELIMITED BY "   "

                       X"00"           DELIMITED BY SIZE

                                         INTO   KEY-AUFRUF

               MOVE     KEY-AUFRUF             TO     VALUENAME

           END-IF.

           CALL WINAPI   REGQUERYVALUEEX   USING

                               BY VALUE     HKEYRESULT

                             BY REFERENCE VALUENAME

                               BY VALUE     NULLPTR

                               BY REFERENCE VALUETYPE

                               BY REFERENCE VALUEDATA

                               BY REFERENCE VALUEDATA-LEN

                               RETURNING   RC

           END-CALL.

 

           IF RC EQUAL TO ZEROES

               STRING VALUEDATA DELIMITED BY X"00"

                               INTO REG-KEY-ERGEBNIS

           END-IF.

 

           MOVE RC     TO           REG-KEY-ERGEBNIS-CODE.

 

           CALL WINAPI REGCLOSEKEY USING

                               BY VALUE   HKEY

                               RETURNING   RC

           END-CALL.


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Have anyone an idea or a sample for 64 bit?


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Hi Bernd,

Can you please provide some more detail here?

Your example does not actually show which registry key you are trying to access, nor do you state what the error actually is that is being returned?
Is this a 32-bit native application running under Windows 7 64-bit?
Are you trying to access a 64-bit registry entry?

I found a good post explaining some of the potential problems and solutions with trying to access a 64-bit registry entry from a 32-bit application here:

Thanks.


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Can I send you a zip file?


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Can I send you a zip file?


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Yes, please send to chris.glazier@microfocus.com.

You may have to rename it to .txt or .docx or it may be stripped by our e-mail filter...


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

is on the way!


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Did you become the Mail?


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Yes, I received the zip file. Thank you.

I tested your example with default values which are trying to open the key HKLM with subkey of:

System\\CurrentControlSet\\Services\\....

This fails with a rc = 2.

Why is there the ā€œā€¦ā€ at the end of the subkey name?

If I remove the ā€œā€¦.ā€ then it opens successfully.

Also, if you wish to open a key under Software\\ when running a 32-bit application under Windows 64 then you need to use an additional flag to tell it to use either the 32-bit registry hive or the 64-bit registry hive.

This is covered in the article link that I previously referenced:

      78 KEY-WOW64-32KEY                   value h'0200'.

      78 KEY-WOW64-64KEY                   value h'0100'.

      01 open-flags                        pic s9(9) comp-5.

          compute open-flags = key-query-value b-or KEY-WOW64-64KEY

          CALL WINAPI     REGOPENKEYEX     USING

                              BY VALUE     HKEY

                              BY REFERENCE SUBKEY

                              BY VALUE     0

                              BY VALUE     open-flags

                              BY REFERENCE HKEYRESULT

                              RETURNING    RC

          END-CALL.


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Thats it!!!

Great!

Now at last:

This call give you the Windows Version back:

          CALL WINAPI "GetVersion" RETURNING DWVERSIONINFO.

So far so good !

But how can I find out is it 32/64Bit Windows

Best Regards

Bernd


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Thats it!!!

Great!

Now at last:

This call give you the Windows Version back:

          CALL WINAPI "GetVersion" RETURNING DWVERSIONINFO.

So far so good !

But how can I find out is it 32/64Bit Windows

Best Regards

Bernd


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Please see the response to a previous post that I made regarding this issue:

community.microfocus.com/.../10005.aspx

Thanks.


Hi!

I have a Problem to Access / Read the Regestry via Windows API under Windows 7 64 Bit

Under Windows 7 32 Bit there is no Problem...

Here is the code that works under 32 Bit without Problems:

           MOVE     SPACES                  TO     REG-KEY-ERGEBNIS.            MOVE     SPACES                  TO     KEY-AUFRUF.

           STRING   REG-KEY-HAUPTKEY        DELIMITED BY "  "                     X"00"                   DELIMITED BY SIZE                                             INTO   KEY-AUFRUF            END-STRING.

           MOVE     KEY-AUFRUF              TO     SUBKEY.

           CALL WINAPI     REGOPENKEYEX     USING                                BY VALUE     HKEY                                BY REFERENCE SUBKEY                                BY VALUE     0                                BY VALUE     KEY-QUERY-VALUE                                BY REFERENCE HKEYRESULT                                RETURNING    RC            END-CALL.

           MOVE 256                             TO     VALUEDATA-LEN.            MOVE LOW-Values                      TO     VALUEDATA.

           IF  REG-KEY-SUBKEY EQUAL TO SPACES                MOVE     LOW-Values              TO     VALUENAME            ELSE                MOVE     SPACES                  TO     KEY-AUFRUF                STRING   REG-KEY-SUBKEY   DELIMITED BY "   "                         X"00"            DELIMITED BY SIZE                                          INTO   KEY-AUFRUF                MOVE     KEY-AUFRUF              TO     VALUENAME            END-IF.

           CALL WINAPI   REGQUERYVALUEEX    USING                                BY VALUE     HKEYRESULT                                BY REFERENCE VALUENAME                                BY VALUE     NULLPTR                                BY REFERENCE VALUETYPE                                BY REFERENCE VALUEDATA                                BY REFERENCE VALUEDATA-LEN                                RETURNING    RC            END-CALL.

           IF  RC EQUAL TO ZEROES                STRING VALUEDATA DELIMITED BY X"00"                                 INTO REG-KEY-ERGEBNIS            END-IF.

           MOVE RC     TO            REG-KEY-ERGEBNIS-CODE.

           CALL WINAPI REGCLOSEKEY  USING                                 BY  VALUE    HKEY                                 RETURNING    RC            END-CALL.


#64BitWindowsAccessRegistry

Many Thanks Chris!!!!