Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/lua-winreg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Melnichuk <alexeymelnichuck@gmail.com>2016-11-15 16:04:57 +0300
committerAlexey Melnichuk <alexeymelnichuck@gmail.com>2016-11-15 16:08:28 +0300
commit104aff465b80a879a9a44415baa34ce53bfa602a (patch)
tree933b4c1099906d284d080cd177d29c509fc08af8
parent93608de75f120274e68f7250f0f64f4073e8d229 (diff)
Add. `32` and `64` access modes (close #1)
```Lua local p = [[HKEY_LOCAL_MACHINE\SOFTWARE]] local key = assert(winreg.openkey(p, 'r')) local key64 = assert(winreg.openkey(p, 'r64')) local key32 = assert(winreg.openkey(p, 'r32')) ```
-rw-r--r--appveyor.yml1
-rw-r--r--src/winreg.c14
-rw-r--r--test/test_5_1_14.lua21
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("---------------------------------")
+