diff options
-rw-r--r-- | appveyor.yml | 1 | ||||
-rw-r--r-- | src/winreg.c | 14 | ||||
-rw-r--r-- | test/test_5_1_14.lua | 21 |
3 files changed, 36 insertions, 0 deletions
diff --git a/appveyor.yml b/appveyor.yml index b978027..8500078 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,3 +33,4 @@ test_script: - lua test_5_1_9.lua - lua test_5_1_10.lua - lua test_5_1_13.lua + - lua test_5_1_14.lua diff --git a/src/winreg.c b/src/winreg.c index 5257166..1952a46 100644 --- a/src/winreg.c +++ b/src/winreg.c @@ -97,6 +97,20 @@ REGSAM reg_aux_getaccess(lua_State *L, int i){ case 'w': acc |= KEY_WRITE; break;
case 'r': acc |= KEY_READ ; break;
case 'a': acc |= KEY_ALL_ACCESS ; break;
+#ifdef KEY_WOW64_64KEY
+ case '6': if(*++psz == '4') {
+ // Access a 64-bit key from either a 32-bit or 64-bit application
+ acc |= KEY_WOW64_64KEY;
+ break;
+ }
+#endif
+#ifdef KEY_WOW64_32KEY
+ case '3': if(*++psz == '2') {
+ // Access a 64-bit key from either a 32-bit or 64-bit application
+ acc |= KEY_WOW64_32KEY;
+ break;
+ }
+#endif
default : lua_error_invalid_option(L, i);
}
}
diff --git a/test/test_5_1_14.lua b/test/test_5_1_14.lua new file mode 100644 index 0000000..a5fb409 --- /dev/null +++ b/test/test_5_1_14.lua @@ -0,0 +1,21 @@ +local winreg = require "winreg" + +local p = [[HKEY_LOCAL_MACHINE\SOFTWARE]] + +local key64 = assert(winreg.openkey(p, 'r64')) +local key32 = assert(winreg.openkey(p, 'r32')) + +function DumpKeys(hkey) + for name in hkey:enumvalue() do + result, type = hkey:getvalue(name) + print(name, result, type) + end +end + +print('X64:') +DumpKeys(key64) +print("---------------------------------") +print('X32:') +DumpKeys(key32) +print("---------------------------------") + |