上一次的缺陷没有总结,现在补上:Symbian 中内核对象的等待机制缺少一个统一的模型。
这次要说的是过度设计上的一个例子。由于各种各样的目的,或者用户需求,应用程序在开机的时候能够自动启动是对操作系统的一个普遍要求。Windows 的全系列系统都实现了这个功能,而且具有非常丰富的支持方式。从最开始的启动组,到后来的 Run 注册表项,以及各种服务。
但是在 Symbian 上,如果你的程序没有经过 Symbian Signed,则无法达到开机自启的效果,这无疑是一个败笔。Symbian 操作系统为了所谓的安全,已经在很多地方为自签名程序(严格意义上的开发者自签名,而不是网上流行的用户自签名)设置了障碍,包括安装时的警告,以及诸多能力不可用等等。应该明白的是,开机自启并不是一个可以造成额外恶意后果的行为,而仅仅是一个程序运行的入口方式。一个程序,如果用户能够接受其手动运行时引发的影响或者后果,很显然也能接受它开机后自行启动,系统其它的安全防护措施已经保证了两种情况下程序的行为不能有能力范围上的任何区别。
与 Windows 系统作比较,即使是最新的以安全著称的 Windows Vista 系统和 Windows 7 系统,也没有彻底封杀普通应用程序将其加入开机自启列表的行为。如果说有某些开机自启行为是无法实现的话(例如受限用户安装的程序很可能仅能在此用户登录系统时才能被自动加载),那也是由于受到了另外的安全规则的制约(用户权限)。
相对而言,Symbian 系统提供的开机自启支持,不但在安全概念上逻辑混乱,而且丑陋难用,并存在不少莫名其妙的 BUG,卸载一个具有开机自启功能的软件有时会导致系统内其他具有此功能的软件自启失效(规律很难找到,似乎与文件名长度有关)。