【问题标题】:How to determine if my library is running from WinUI3 Win32 app?如何确定我的库是否从 WinUI3 Win32 应用程序运行?
【发布时间】:2022-01-26 01:51:43
【问题描述】:

我的库应该有不同的行为,具体取决于应用平台。据我所知,我可以使用this code 确定该应用程序是 UWP 应用程序。但即使对于 WinUI3 Win32 应用程序,它也会返回 true

有什么方法可以确定该应用程序是 WinUI3 Win32 应用程序并且可以调用 AppContainer 沙箱之外的任何 API?

【问题讨论】:

  • 你想做的事情被沙箱阻止了——只要试试看它是否成功,或者它是否失败并显示 ERROR_ACCESS_DENIED。
  • @RaymondChen 应该有更优雅的方式
  • 了解 X 是否可行的优雅方法是尝试 X 并查看它是否有效。如果你说“如果 Y 是真的,那么我会假设我可以对 X”,那么当 X 和 Y 之间的关系发生变化时,你就会遇到问题。如果沙盒中可以做什么和不可以做什么的规则发生变化(并且它们确实发生了变化),那么您的假设可能不再有效。如果您分享有关您要调用的 API 的更多详细信息,也许我们可以想出有效的方法来检测对它的支持。
  • 根据您要完成的工作,优雅的方法可能是针对多个框架,在您的代码中使用预处理器符号并为uapnet* 框架分发单独的程序集。
  • @mm8 我的库用于设置代理。对于 win32 应用程序,我想自动设置系统范围的代理,但对于 UWP 应用程序,由于安全限制,这是不可能的。所以我需要一个帮手,。可以确定当前平台

标签: uwp winui-3 winui


【解决方案1】:

我猜你可以使用Window.Current 属性来确定应用的AppModel。

当从 UWP 应用中的 UI 线程调用时,它会返回 CoreWindow,并且在桌面应用中总是返回 null

if (Window.Current != null)
{
    // UWP app model
}

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2010-10-19
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多