消費電力の追跡、プロセスの列挙、プロセスごとの CPU 使用率の計算など、あらゆる種類の低レベルのデバイス API 作業を行うために、学習および個人消費を目的とした Metro アプリを作成したいと考えています。残念ながら、これらのデスクトップ API はMetro アプリケーションから禁止されています。
これを回避する最初の試みは、Windows 以外のストア C++ ライブラリを作成することでした。このライブラリには、や などのWINAPI_FAMILY
関数を使用するために変数が正しく設定されています。残念ながら、最初の引数でトークンをリターン コードとともに渡すと失敗するのは、この後者の関数呼び出しです。QueryIdleProcessorCycleTime()
CallNtPowerInformation()
ProcessorInformation
STATUS_ACCESS_DENIED
興味深いことに、最初の引数としてCallNtPowerInformation()
指定すると問題SystemBatteryState
なく動作するため、プロセッサ情報を取得するために Metro アプリとして実行する場合に、何らかのアクセス権限が不足していると思います。Metro アプリは非常に制限された権限で実行されると読んだので、これらの権限を増やして API 呼び出しを適切に実行できるようにする方法を探しています。コーディング エラーではなくプロセス特権であることをテストするために、コンソール アプリケーションから C++ ライブラリを使用しましたが、すべて問題なく動作しました。
面倒な作業をすべて実行し、ソケットを介して Metro アプリに結果を伝える 2 つ目のデスクトップ バックグラウンド プロセスを作成する必要はありません。これでうまくいくことはわかっていますが、すべてを同じプロセス空間に収めたいと思います。