web-dev-qa-db-ja.com

デスクトップアプリのUWPの制限

「従来の」Win32アプリと比較すると、新しいUWPアプリモデルにはいくつかの制限があることを知っています。

デスクトップアプリの例としてVisual Studio Codeを取り上げましょう。

Visual Studio Codeのどの機能が欠落していたか、UWPアプリである場合、ユーザーの観点と異なる必要がありましたか?

編集:マイクロソフト認定資格「C#を使用したWindowsストアアプリの開発の必須事項」および試験70-355:ユニバーサルWindowsプラットフォーム-アプリデータ、サービス、およびコーディングパターンの試験を実施しました。だから私はRT APIを獲得することについて何かを知っています。

「サンドボックスで実行されるuwpアプリ」のような答えを気にしないでください。彼らは、ユーザーの観点からの制限について何も言わないので、役に立たない。私は意図的に実際の例を取り上げたので、具体的に進むことができます。

制限は、アプリがカスタム構文ハイライターやリファクタリング拡張機能などのサードパーティのプラグインをサポートできないことです(Windowsストアアプリの制限であり、まだ有効かどうかは不明です)。

もう1つの制限は、アプリがuwpにAPIがないため、スクリーンショットを取得できないことです(実際には、それが本当かどうかわかりません)

40
Liero

「Win32デスクトップアプリ」という語句は、Win32 APIプログラミングモデルがWindows NT 3.1以降存在していたため、不明確です。また、介入する20年間で数十の開発言語とUIフレームワークをカバーできます。

主なUWPの違いの概要を以下に示します。

  • APIの表面積。UWPプラットフォームは、すべてではありませんが多くのWin32およびCOM APIをサポートし、新しいAPIを導入しています。 「Win32デスクトップアプリ」が主にWindows 95にまで遡るANSI APIを使用している場合、多くの更新が必要です。主にWindows Vista時代のUNICODE APIを使用している場合、多くの機能が「正常に動作します」。 Windowsランタイムアプリ(システム)用のWin32およびCOM API を参照してください。

  • セキュリティコンテキスト。UWPプラットフォームは、AppContainerセキュリティコンテキストでアプリケーションを実行します。 Windows Vista以降の「Win32デスクトップアプリ」は、「標準ユーザー」または「管理者」として実行されます。 UWPアプリは「標準ユーザー」よりもアクセス権が低く、「管理者」として実行することはできません。 UWPアプリは追加の capabilities を要求して、ユーザーから許可を得てさらにいくつかの権限を取得できますが、システムおよびユーザーデータへのアクセスは制限されています。たとえば、インストールされている場所、分離されたアプリケーションデータフォルダー、分離された一時ファイルフォルダーのみ、ほとんどのファイルシステムを読み取ることはできません。 ファイルのアクセスとアクセス許可(Windowsランタイムアプリ) を参照してください。これは、UWPアプリがデバイスへのアクセスを制限していることも意味します。 デバイスとセンサーの概要 を参照してください。

標準ユーザーを導入したWindows Vistaユーザーアカウント制御は、古い「すべてが管理者」モデルと比較して、システムおよび他のユーザーデータの保護に重点を置いていましたが、すべてのアプリがアクセスまたは変更することもできるため、現在のユーザーのデータファイルを保護することはほとんどありませんでした。 AppContainer分離は、システムと現在のユーザーのデータと設定の両方を保護しています。 「Win32デスクトップアプリ」は、実行時に読み取り専用であるC:\Program Filesにインストールし、アプリケーションデータフォルダーを使用することが推奨されましたが、必須ではありませんでした。

  • AppXの展開。「Win32デスクトップアプリ」は、さまざまな展開方法を使用します。多くの場合、MSIテクノロジを使用し、「管理者」として実行します。 UWPアプリはAppXファイルにパッケージ化されており、常にシステムによって展開されます。 「カスタムインストールステップ」がないため、UWPアプリはドライバーやサービスをインストールしたり、ACLを変更したりすることはできません。システムはC/C++ランタイム(Visual C++ 2015のみ)の展開を処理します。

  • UIモデル。 WinForms、MFC、WPFなどの「Win32デスクトップアプリ」用のUIフレームワークは多数あります。UWPは従来のWin32ウィンドウ、WM_メッセージ、またはGDIをサポートしていないため、これらの大半はUWPと互換性がありません/ GDI +。 UWPアプリの場合、C++またはC#コードビハインドのXAML、C++(またはSharpDXなどのサードパーティアセンブリを介したC#)のDirectX(Direct2Dおよび/またはDirect3D)、またはJavaScriptのHTML5を使用できます。

したがって、製品のコードベースと依存関係を完全に理解しないと、質問に答えることは不可能ではないにしても非常に困難です。

Windowsアプリの使用を開始する を参照してください

43
Chuck Walbourn