近日在用到RAPI CeRapiInvoke 遇到了问题,返回E_ACCESSDENIED 。
在模拟器上是正常的,一拿到 两台手机上试了试,有一台就出现了这个问题,经了解,是dll证书签名的 问题。
下面是解决办法:
1、首先在DLL工程项目里面 添加SDK自带的 SamplePrivDeveloper.pxf(在Windows Mobile 6 SDK/Tools/Security/SDK Development Certificates目录下),来获取特权,然而工作并没有做完。
2、创建一个CAB项目,并
新建一个_setup.xml ,加入 MSDN中CeRapiInvoke中 Remarks 部分
<wap-provisioningdoc>
<characteristic type="Metabase">
<characteristic type="RAPI/Program Files/Green Sky/recaller.dll/*">
<parm name="rw-access" value="3"/>
<parm name="access-role" value="152"/> <!-- 152 maps to "CARRIER_TPS | USER_AUTH | MANAGER" -->
</characteristic>
</characteristic>
</wap-provisioningdoc>
其中dll路径要按照你的实际路径修改。
最后用 cabwiz XXX.inf /postxml _setup.xml,
然后在WM端安装就可以了 ,如果不想出现安装对话框,即可用wceload来安装cab包。