2012-02-24 6 views
4

私はSQLiteをWinRTと互換性を持たせようとしています。 WinRTでサポートされていない古いコールを新しいものに切り替えました。今度はプロジェクトをコンパイルして、古いAPI呼び出しやサポートされていない呼び出しを使用していないことを検証したいと思います。WinRTコンポーネントのDLLを検証できますか?

Windows App Cert Kitは、実際のメトロアプリケーションのみを検証しているようです。 WinRT DLLを検証するにはどうすればよいですか?

編集:アプリ認定キットにバグがあるよう

それはそうです。参照されたdllを検証するようではありません。コードをアプリケーションに移動すると、そのコードが検証されます。また、コンパイル時エラーは、メトロでサポートされていないコールに対しては常に存在するとは限りません。コンパイル時にこれらのエラーをキャッチするために設定する必要があるフラグはありますか?問題のファイルは、このファイルのWinRT拡張機能をオフにしたCファイルです。

+0

どう見ていますか? – tofutim

+0

ポートを完了する時間がありませんでした。 SQLiteチームがWinRTのサポートを追加しているようですが、すぐに実行されるかもしれません:) – sarvesh

答えて

4

メトロでサポートされていないコールのコンパイル時エラーをスローしないという問題は、コンシューマプレビューで修正されました。また、アプリ認定キットは参照されたdllも正しく検証するようになりました。

1

私が知っているのは、Metro Appsが消費するSQL Liteの実装を行うためのコードプレックスです。 http://sqlwinrt.codeplex.com/。ポートの状態に応じて、オプションとして考えることができます。

これはどのように役立つのか分かりましたが、個々のDLLを検証する方法についてはわかりません。

しかし、あなたに非常に良いアイデアを与えるために起こる数多くの暗黙的および明示的なチェックがあります。

ストアにアプリケーションをアップロードする場合、SQL Liteの実装はパッケージの一部でなければならず、したがって認証プロセス中に検証されます。認定プロセスでは、プロジェクト内のすべての実行可能ファイルとDLLが検査され、不正なAPIが検索されます。そのように検出された場合、認証は失敗します。

また、コンパイルしているWindows 8 SDKには、Win8 Metro APIのみを公開するヘッダーファイルが含まれているため、コンパイル時にエラーが発生します(これは正常にコンパイルして解決したようです)。

最後に、アプリケーションでサンドボックス環境で実行していて、レジストリアクセスの簡単な例のようにAPIが想定していない処理を実行しようとすると、セキュリティ/アクセスの問題に対して実行されます。 SYSINTERNALSの "Process Monitor"は、トレース中にセキュリティ/アクセスの問題を表示することで、アプリケーションでこれを監視する優れた方法です。

私はあなたの質問を考慮してこれを広く知っています。私はそれが助けることを望む。

+1

あなたが参照するcodeplexリンクは、既存のSQLiteコードを包むラッパーです。したがって、認証に合格するには、許可されていないAPIを使用しないSQLiteのコンパイル済みポートが必要です。私はそれがアプリの認定資格を渡していることを確認するためにそれをサンプルアプリケーションに含めました。しかし、私が変更を加えるたびにそのことをしたくないのです。理想的には、それをポストビルドステップの一部にしたいと思っています。 – sarvesh

関連する問題