ウィモバの日々

Windowsをモバイルする…それがウィモバ(仮)。手のひら端末が好きです

UWPアプリではdllimportは使えるがWin32APIを自由に使えるわけではないらしい

UWPアプリのWebviewを色々と試してたんだけども、非常に残念なことになってしまった。。。
http://d.hatena.ne.jp/rideonshooting/20170324/1490350407
以前調べたら出てきた、UAを変更出来るUrlMkSetSessionOption関数は非常に便利に使えたんだけども
DebugビルドからReleaseビルドに変更してみると、Exception例外を吐いてアプリが動かなくなってしまった。


この現象はWin10環境でもW10M端末でも同様に発生して困ってしまったぞい。


ビルドオプションを色々といじったり、DebugビルドとReleaseビルドのオプションを比較してみると
どうやら[.NETネイティブツールチェーンでコンパイルする]のチェックを外すと問題なく動く、ということが分かった。


なのでこの状態で動作確認し続けることにしたんだけども・・・

  • Windows アプリ認定キット - テスト結果が不合格に

ネットを調べているとストアアプリを公開するために必要な手順があるという話を見つけたので
アプリパッケージを作成して「アプリ認定キット」でのテストを実施してみたところ
なんと「Binary Analyzer」と「サポートされている API」が不合格になってしまった。


確認のためにデフォルトのUWPプロジェクトを新規作成して確認したところ、リソースの既定イメージでの不合格だけが出るが
UrlMkSetSessionOption関数を追加+実行出来るように[.NETネイティブツールチェーンでコンパイルする]の
チェックを外したところ、同じように「Binary Analyzer」と「サポートされている API」が発生してしまった。
Windows ストア アプリ用の Windows SDK の一部ではない API を使用することは Windows ストアの認定要件に違反しています」という一文がヘヴィーだねえ。


うーん。dllimport自体は提供されていて機能として使えるけど、APIによってはストアアプリに公開するのは無理っぽい。
まぁ低レベルなWin32のAPIを自由に扱えちゃったらUWPのセキュリティ的な問題が危ないし仕方ないのかなー。
UserAgentをどう偽装すればいいのか・・・
UWPアプリ難しいね。