2

我想创建一个用于学习和个人消费目的的 Metro 应用程序来完成各种低级设备 API 工作,例如跟踪功耗、枚举进程和计算每个进程的 CPU 使用率等......不幸的是,这些桌面 API 是禁止 Metro 应用程序。

我第一次尝试解决这个问题是创建一个非 Windows 存储 C++ 库,它WINAPI_FAMILY正确设置了变量,以便使用QueryIdleProcessorCycleTime()CallNtPowerInformation(). ProcessorInformation不幸的是,当我将第一个参数中的令牌传递给它并带有STATUS_ACCESS_DENIED返回码时,正是后一个函数调用失败了。

有趣的是,作为第一个参数CallNtPowerInformation()给出时效果很好SystemBatteryState,所以我想当作为 Metro 应用程序运行以获取处理器信息时,我缺少某种访问权限。我读到 Metro 应用程序以非常有限的权限运行,因此我正在寻找一种方法来增加这些权限,以允许我的 API 调用正常通过。为了测试这是进程权限而不是编码错误,我使用了控制台应用程序中的 C++ 库,一切正常。

我真的不想创建第二个桌面后台进程来完成所有脏活并通过套接字将结果传递给 Metro 应用程序。我意识到这可以工作,但我宁愿将所有东西都放在同一个进程空间中。

4

0 回答 0