在開發(fā)基于Windows商店的SMS短信設(shè)備應(yīng)用時(shí),需要使用SmsDevice類API,該類API僅能用于移動運(yùn)營商的商店應(yīng)用(MBAE App)或運(yùn)營商、移動寬帶設(shè)備供應(yīng)商授權(quán)的Windows 商店設(shè)備應(yīng)用,即此類應(yīng)用必須配以相應(yīng)的配置文件Service/Device Metadata,使得綁定的Windows 商店應(yīng)用獲得使用SmsDevice API的權(quán)限。如果metadata配置出現(xiàn)問題,那么就會遇到Access Denied問題。這時(shí)候我們可參照如下過程進(jìn)行手工配置。(基于Windows 8 和Visual Studio 2012,假設(shè)metadata已經(jīng)創(chuàng)建完成,調(diào)試機(jī)器自帶嵌入式移動寬帶設(shè)備)。
1. 檢查Metadata文件是否正確
將Metadata文件拖動到Visual Studio界面,會彈出Device Metadata Authoring Wizard 對話框,在該對話框中注意檢查以下兩項(xiàng):
1) 在Associations 標(biāo)簽下,檢查Hardware ID里的設(shè)備的PIDVID是否正確
2) 在Applications標(biāo)簽下,檢查Metro style Device App中的各項(xiàng)內(nèi)容,確保與待調(diào)試的商店應(yīng)用中的對應(yīng)項(xiàng)一致
雙擊Package.appxmanifest文件,Package 標(biāo)簽下:
@將Package name的值填到Metro style Device App 下的Package Name處;
@將Publisher 的值填到Metro style Device App 下的Publisher處;
右擊Package.appxmanifest文件,選擇”View Code”,以XML形式查看該文件
@將Application tag 的Id 屬性的值填到Metro style Device App下的App ID處
2. 重新配置metadata
1) 配置機(jī)器為測試模式:
在C:\Windows\System32目錄下,查找cmd.exe,以管理員權(quán)限打開,運(yùn)行bcdedit -set testsigning on(如需關(guān)閉測試模式可使用命令:bcdedit –set testsigning off)
2) 刪除注冊表殘留文件。如果注冊表中沒有對應(yīng)的文件,跳過此步驟。
打開注冊表編輯器
定位到 HKLM\SOFTWARE\Microsoft\WwanSvc\MobileBroadbandAccounts
該鍵下缺省情況沒有子鍵,當(dāng)移動寬帶設(shè)備第一次使用時(shí)會創(chuàng)建3個(gè)子鍵:Accounts,NetworkInterfaceBindings和Data, 刪除Accounts和NetworkInterfaceBindings這兩個(gè)子健
更多信息可參考鏈接http://msdn.microsoft.com/en-us/library/windows/hardware/dn247050.aspx中的Check the registry 章節(jié)
3) 刪除殘留的metadata文件,如果沒有殘留文件則跳過此步驟
將C:\ProgramData\Microsoft\Windows\DeviceMetadataCache\dmrccache路徑下的multiloc文件夾全部刪除
4) 將待調(diào)試的Windows商店應(yīng)用的metadata文件拷貝至以下目錄:
C:\ProgramData\Microsoft\Windows\DeviceMetadataStore\en-US
5) 等待一定時(shí)間,系統(tǒng)會在目錄C:\ProgramData\Microsoft\Windows\DeviceMetadataCache\dmrccache中重新生成multiloc文件夾,并在該文件夾下生成一個(gè)與metadata同名的 文件夾,如下圖所示:
打開SoftwareInfo文件夾下的SoftwareInfo.xml,確保該文件夾中的信息,如Identity Name, Publisher ,Application Id與步驟1.2中metadata的內(nèi)容一致(這里 Identity Name對應(yīng)于PackageName,Application Id對應(yīng)于App ID)。若不一致,則需要按照步驟2)到5)重新進(jìn)行設(shè)置。
此設(shè)備類商店應(yīng)用的access denied 問題常與設(shè)備的訪問權(quán)限相關(guān),通過檢查metadata文件的正確性及該文件配置的正確性,應(yīng)該可以解決access denied 的問題。