2014-09-29 61 views
2

我正在使用Lua for Windows。 Windows 8.1 Lua 5.1閱讀與lua的Windows註冊表

我已經添加了Steve Donovan的winapi模塊。 我想能夠從Windows註冊表讀取/寫入。 我得到的結果與winapi模塊不一致。

我可以閱讀[[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers]]使用winapi.open_reg_key;這是在winapi的示例文件中。 如果我刪除「\服務器」,有時它工作,有時它會返回空和「操作成功完成」。

我真的想在[[HKEY_LOCAL_MACHINE\SOFTWARE\LastName\MyStuff]]上讀我自己的密鑰。 如果我重命名「MyStuff」鍵,然後使用winapi.create_reg_key,它會失敗,但是當我將鍵重新命名時,open_reg_key可以工作。 我真的很茫然。

是否有一些其他的二進制我可以用來訪問Windows註冊表?

+0

我發現我的問題的一部分。由於我運行的是32位版本的Lua和64位版本的Windows,因此Winapi模塊正在被重定向到註冊表的Wow6432Node部分。 – FireyMerlin 2014-09-29 23:45:16

+0

把它寫成答案並接受它。在接受它之前,您可能需要等一會兒。 – 2014-09-29 23:51:22

+0

是說註冊表重定向在你的程序中是一個問題,或者僅僅是在你理解它的偶然行爲時? – 2014-09-30 00:54:42

回答

3

截至2014年9月29日,Windows的Lua爲32位。用32位程序寫入註冊表不能正常工作。特別是,當使用32位應用程序寫入Windows 8.1的64位註冊表HKEY_LOCAL_MACHINE時,寫入重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node。問題不在於Lua和Lua winapi。問題出在我的理解上。

+0

你能擴展你的誤解嗎?這將有助於使您的答案有用。 – Schollii 2014-10-01 03:31:58

+0

當使用32位應用程序寫入HKEY_LOCAL_MACHINE的Windows 8.1 64位註冊表時,寫入被重定向到HKEY_CURRENT_USER \ Software \ Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node。 – FireyMerlin 2014-10-02 00:15:14