全部,
我将我的应用程序设置存储在资源中。当我的程序首次加载时,我使用WinAPI读取指定的资源。然后我解析检索到的字节数据。这对我来说完美无缺。
现在让我们假设用户改变了我的应用程序中的设置。他/她检查复选框控件。我想将更新的设置保存到我的资源中。但是,在我的应用程序运行时,似乎我对UpdateResource的调用无效。即使它的大小相同,我也无法修改我的资源数据。
首先,是否可以修改正在运行的图像的资源数据?其次,如果不可能,我有什么选择在我的应用程序内部存储设置?
注意:我必须在运行的可执行文件中进行设置。它们不能位于硬盘驱动器或注册表中。请不要建议作为一种选择。
答案 0 :(得分:6)
编写自修改代码是100%可能的。这不是一件容易的事。
当您启动可执行文件时,Windows会将其映射到内存中。这实际上会锁定文件并阻止在运行时进行编辑。显然,您可以取消映射您的程序(通过在ntdll中使用未记录的函数)。取消映射文件后,您就可以对其进行更改。
这有点类似于您想要做的事情:http://www.johnfindlay.plus.com/lcc-win32/asm/SelDelNT.htm
显然,您希望进行更改,而不是删除它。疯狂背后的想法是一样的 - 你必须取消映射文件。
答案 1 :(得分:1)
答案 2 :(得分:0)
您是否阅读过MSDN(UpdateResource函数)?它有一个列表,不会更新您的更改。 也许你正在尝试那些。