慎用注册表作为软件配置手段

    在过去的Windows编程中,注册表一直是广大软件编写者用于存放软件配置信息的常用“场所”,其有点当然是有通用API,使用方便。缺点则是受到系统限制,特别当你重装系统后,一切设置都不消灭干净,很多软件需要重装。所以,当前越来越多的软件已经采用如XML这样的配置文件或干脆自己设计配置文件来作为配置手段。

       Windows Mobile平台中同样有注册表可供开发者使用,接口与Windows完全相同,但是,如果你要用注册表来作为软件配置信息的“容器”,那么你可要注意了,因为你会发现很可能你变动的注册表信息在手机重启后消失的干干净净。

       比如,你编好一个软件然后打包,当然,在打Cab包的inf配置文件中,会有类似的写入注册表的语句:

[RegSettings]

       HKCU,%reg_path%,Type1,0x00010001,0

HKCU,%reg_path%,Type2,0x00010001,1

即安装Cab包后,在系统注册表的HKCU的字符串“reg_path”制定路径下安装两个DWORD的键Type1Type2,其值分别为01

然后操作软件,假设将Type1的值改成了1,将Type2的值改成了3之后,你可能认为这下这些软件配置文件保存好了吧。退出软件,用VS2005的远程注册表查看工具看看,确实如此。不过别高兴,重启手机试试,“OK,不就重启手机嘛,分分钟搞定!”,重启手机,然后再用VS2005远程注册表查找工具看看,“OhMy God,怎么Type1又变成0Type2又变成1了?”,是的,在我手上测试过的两台多普达手机中就有这样的情况。

为什么?说实话,这里只是提供一个经验,具体原因欢迎探讨,我装过几个小公司的软件发现也有这个问题,但是几个大公司的软件却没有这样的问题。我怀疑更授权或者WM5平台上的数字签名机制有关。这样的数字签名需要购买,而且有“特权”和“非特权”的区别,注册表操作属于“特权”操作。这里只是我的猜测,具体如何也希望有经验的人士给予解答。在此致谢先,^_^

 

学累的吧,快来看看我的非技术Blog--猫思猫想

你可能感兴趣的:(慎用注册表作为软件配置手段)