位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 沙箱應(yīng)用程序

提問人:劉團圓發(fā)布時間:2020-12-11

    現(xiàn)在應(yīng)回過頭來,看看通用Windows平臺的.NET框架的局限性。運行在移動設(shè)備的應(yīng)用程序?qū)\行它們的操作系統(tǒng)只有有限的訪問權(quán)限,這意味著不能編寫某些類型的應(yīng)用程序。如果需要直接訪問文件系統(tǒng),以訪問Windows系統(tǒng)文件,就必須編寫經(jīng)典的Windows桌面應(yīng)用程序。

    利用C#編寫通用應(yīng)用程序時,會發(fā)現(xiàn)應(yīng)用程序引用的.NET Framework成為一個限制因素,缺少了常見的名稱空間和類,或者可用的方法比以前更少。如果打開Visual Studio,創(chuàng)建一個新的Blank應(yīng)用程序,然后擴展References節(jié)點,將看到該引用非常不同于Windows桌面應(yīng)用程序中的引用。這里有一個對分析器的引用,以幫助監(jiān)控應(yīng)用程序的各個方面,有一個對.NET Core for UWP的引用,還有一個對Universal Windows的引用。你可能會認為,可以簡單地改變引用,從而使用正常的.NETFramework。你可以這么做,但當你試著把應(yīng)用程序發(fā)布到Windows Store時,應(yīng)用程序會因為不符合規(guī)范而被拒絕。

    Windows通用應(yīng)用程序的沙箱性質(zhì),以及它們獲得Windows Store認可之前必須經(jīng)歷的過程,意味著用戶應(yīng)該很少擔心通過Store會下載到惡意的應(yīng)用程序。顯然,有些人會試圖規(guī)避這一點,用戶不應(yīng)該放松瞥惕;然而,通過Windows Store應(yīng)用把惡意程序放在Windows計算機上,要大大難于通過正常方式來下載和安裝應(yīng)用程序。


1.磁盤訪問

    桌面應(yīng)用程序差不多可以隨意訪問磁盤,但有一些例外。一個這樣的例外是,通常禁止它們寫入Program Files文件夾和其他系統(tǒng)文件夾。Windows迎用應(yīng)用程序只能直接訪問少數(shù)非常特定的磁盤位置。這些位置包括安裝應(yīng)用程序的文件夾、與應(yīng)用程序相關(guān)的AppData文件夾以及一些特殊文件夾,如Documents文件夾。文件和文件夾的訪問權(quán)限也移到通用應(yīng)用程序的.NETFramework中,確保開發(fā)人員不會意外地寫入某個被禁止的 位置。

    為允許用戶控制應(yīng)該在應(yīng)用程序中存儲和讀取什么地方的文件,Windows提供了三個File Picker協(xié)定:FolderOpenPicker、FileOpenPicker和FileSavePicker。這些選擇器類可以在應(yīng)用程序中用于獲得本地磁盤的安全訪問權(quán)限.

    如前所述,也可以使用KnownFolders類訪問設(shè)備上的資源。對于要讀寫的位置,如果只有用戶擁有訪問權(quán)限,應(yīng)用程序才能打開它們,則應(yīng)使用KnownFolders類。


2,串行化、流和異步編程

    使用[Serializable]特性允許類的序列化。通用應(yīng)用程序的.NET不包含這個特性,但可以使用一個類似的特性[DataContract]。DataContract特性使用DataContractSerializer類來序列化類的內(nèi)容。為把序列化的內(nèi)容放在磁盤上或從磁盤上序列化,需要使用一些文件訪問類型,但與正常.NET不同,不能直接創(chuàng)建它們。而應(yīng)使用文件選擇器創(chuàng)建流對象,再用流對象和DataContractSerializer來保存、加載文件。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部