在Windows注册表中存储Object的地址

时间:2014-04-17 09:09:11

标签: windows data-structures registry

我们可以在Windows注册表中存储地址>以及稍后从其他函数中存储读取我们已存储的地址进行更改在该对象直接

如果有可能,任何指导入门教程..!

1 个答案:

答案 0 :(得分:1)

可以将对象的地址存储在注册表中,然后稍后返回,读取它,然后修改该对象。例如,在C中你可以有一个指针,将其转换为long,并将其存储在注册表中:

SomePointer *p;
long i = (long)p;
// now store i in the registry

然后,把它拿回来:

int new_i = read value from registry
SomePointer *new_p = (SomePointer *)i;

但你真的不想这样做。

首先,该指针仅对程序的当前实例有效。如果退出程序并重新启动,则指针不好。此外,指针对于可能在任何时间运行的任何其他应用程序都没有意义。此外,在可以在内存中移动内容的垃圾收集环境中,指针可能随时变为无效。

此外,还会对性能产生影响。访问注册表非常慢。

从软件构建的角度来看,使用注册表等全局资源解决单个程序中共享数据的本地问题是一种非常糟糕的形式。

最后,从实际的角度来看,这没有任何意义。如果您可以访问源代码以便可以对其进行修改以编写和读取注册表,那么您可以使用更强大且更少侵入性的方式来共享数据。例如,编写注册表的模块可以只导出一个符号,而您阅读注册表的模块可以访问该导出的符号。

所以,是的...可以在注册表中存储指针,然后再将其读回并访问指针所引用的对象。但这是一个非常糟糕的主意。