2016-03-29 74 views
24

我知道比較「傳統」的Win32應用程序時,新的應用程序UWP模型有一定的侷限性。UWP限制

讓我們的Visual Studio代碼作爲一個桌面應用程序的一個例子。

人失蹤或必須從用戶的角度不同,如果它是一個UWP應用程序進行哪些Visual Studio代碼的特點是什麼?

編輯: 我做考試微軟認證考試和70-355「使用C#開發Windows應用商店應用程序的要點」:通用Windows平臺 - 應用程序數據,服務和編碼模式。所以我知道一些關於win rt api的內容。

請不要像「沙箱中UWP應用程序運行的」答案麻煩。它們毫無用處,因爲它們沒有提到用戶視角的侷限性。我故意拿現實生活中的例子,所以我們可以具體化。

的限制可能是,你的應用程序不支持第三方插件,如自定義語法高亮或refactorin擴展(這是Windows應用商店的應用程序的限制,不知道它仍然有效)。

另一個限制可能是,你的應用程序是不是能夠採取截圖,因爲在UWP沒有API爲它(不知道它的真實,實際上)

+2

太長的方式在這裏解釋,和那種題外話。我建議你只是在win rt框架中潛水併爲自己嘗試。基本上,所有的應用程序都運行在一個「隔離」的沙箱中。 –

+0

我不需要解釋贏得rt。我沒有要求。大膽的問題顯然有明確的答案,不是。我知道這很難回答,但否則我不會問。答案很難,只是因爲缺乏uwp的經驗,這是自從最近剛剛發佈以來每個人的情況 – Liero

+1

我認爲這是一個非常好的問題,懇求有知識的人提供具體的答案。然而這些並不多見。 –

回答

27

短語「的Win32桌面應用程序」是一個自從Windows NT 3.1以來,Win32 API編程模型就已經出現了,因此這種定義不明確。在二十年的時間裏,它還可以涵蓋數十種開發語言和UI框架。

這裏的關鍵UWP差異的簡要概述:

  • API表面積。 UWP平臺支持許多但不是全部的Win32和COM API,並引入了新的API。如果您的「Win32桌面應用程序」主要使用可以追溯到Windows 95的ANSI API,那麼您需要做很多更新。如果你主要使用Windows Vista時代的UNICODE API,那麼很多東西「正常工作」。請參閱Win32 and COM API for Windows Runtime apps (System)

  • 安全上下文。 UWP平臺在AppContainer安全上下文中運行應用程序。 Windows Vista或更高版本中的「Win32桌面應用程序」以「標準用戶」或「管理員」身份運行。 UWP應用程序比「標準用戶」擁有更少的訪問權限,並且永遠不能以「管理員」身份運行。 UWP應用程序可以請求額外的capabilities以獲得用戶許可的更多權限,但對系統和用戶數據的訪問權限有限。例如,不能讀取大部分文件系統,只能讀取安裝的位置,獨立的應用程序數據文件夾和獨立的臨時文件文件夾。見File access and permissions (Windows Runtime apps)。這也意味着UWP應用程序對設備的訪問受限。見Device and sensor overviews

介紹了標準用戶都集中在保護系統和其他用戶的數據相比前輩「一切都是管理員」的模式,但沒有Windows Vista用戶帳戶控制一點,因爲以保護當前用戶的數據文件所有的應用程序都可以訪問甚至修改它。 AppContainer隔離功能可以保護系統和當前用戶的數據和設置。我們鼓勵「Win32桌面應用程序」安裝到運行時只讀的C:\Program Files,並使用應用程序數據文件夾,但不要求它們。

  • AppX中部署。「Win32桌面應用程序」使用任何數量的部署方式,通常使用MSI技術並以「管理員」身份運行。 UWP應用程序打包在AppX文件中,並且始終由系統部署。沒有「自定義安裝步驟」,因此UWP應用程序無法安裝驅動程序或服務,更改ACL等。系統負責部署C/C++運行時(僅適用於Visual C++ 2015)。

  • UI model。有許多用於Win32桌面應用程序的UI框架,如WinForms,MFC,WPF等。其中絕大多數與UWP不兼容,因爲UWP不支持經典Win32窗口,WM_消息或GDI/GDI +。對於UWP應用程序,您可以使用C++或C#代碼隱藏的XAML,使用C++的DirectX(Direct2D和/或Direct3D)(或通過第三方組件如SharpDX的C#)或使用JavaScript的HTML5。

因此,如果沒有對產品代碼庫和依賴關係的完整理解,回答您的問題即使不是不可能,也是極其困難的。

Get started with Windows apps

+4

我很好的概述了什麼是uwp。我已閱讀所有通過uwp考試所需的msdn atricles。自從它存在以來,我正在開發wpf應用程序。我只是沒有在uwp桌面開發方面的實際經驗。我故意挑選VS Code作爲桌面應用程序的例子,所以清楚了什麼是功能,代碼庫和依賴關係。您提供的鏈接 - 入門與我需要知道的完全相反 – Liero

+1

'永遠不能以「管理員」身份運行'也許這已更改,因爲我可以右鍵單擊我的一個UWP應用程序並以管理員身份運行它。 – user3384842

+0

@ user3384842 - UWP應用*是否從Windows應用商店*下載? AFAIK,* WIndows Store應用程序*永遠不允許以管理員身份運行 - 這違反了這些應用程序始終可以安全運行的概念。另一方面,如果您從其他來源安裝了UWP,則可能有也可能沒有以管理員身份運行的選項。 – ToolmakerSteve