【问题标题】:Windows security popup appears behind the main application windowWindows 安全弹出窗口出现在主应用程序窗口后面
【发布时间】:2019-05-25 06:25:48
【问题描述】:

我在 WPF 应用程序中使用 Windows 10 API“Passport”和“Window Hello”。

bool keyCredentialAvailable = await KeyCredentialManager.IsSupportedAsync();
if (keyCredentialAvailable)
{
      KeyCredentialRetrievalResult keyCreationResult = await KeyCredentialManager.RequestCreateAsync("Hi", KeyCredentialCreationOption.ReplaceExisting);

}

RequestCreateAsync 方法打开询问生物特征或密码的弹出窗口。在 MainWindow 后面的屏幕截图中可以看到。

我没有任何可以将它放在前面的弹出窗口的参考。另外,我在 MainWindow 的 Loaded 方法上调用此方法,以便确认主窗口已完全加载。

Popup 定位问题

预期定位

【问题讨论】:

  • 你能显示你正在使用的代码吗,我的意思是,我以前从未使用过这个 api/功能,但我不知道如何测试它,即使我想
  • @TheGeneral 我已经用代码和预期结果更新了问题
  • @Heena,您在发布问题后找到答案了吗?我也面临这个问题,正在寻找解决方案
  • @Heena 我面临同样的问题,尽管我的应用程序以不同的方式访问 API(它是一个使用 WinRT/C++ 访问 KeyCredentialManager 的 Java 应用程序)。你有什么发现吗?

标签: c# wpf windows windows-security


【解决方案1】:

首先,检查你的函数是否是异步的。

private async void SignInPassport()
{
 bool keyCredentialAvailable = await KeyCredentialManager.IsSupportedAsync();
 if (keyCredentialAvailable)
 {
  KeyCredentialRetrievalResult keyCreationResult = await KeyCredentialManager.RequestCreateAsync("Hi",KeyCredentialCreationOption.ReplaceExisting);
  }
}

如果这不能解决你的问题,试试这个microsoft-passport-login

【讨论】:

  • 函数是异步的private async void MainWindow_LoadedAsync(object sender, RoutedEventArgs e)
  • 我已经检查了您分享的链接。它在 UWP 中,我的应用程序在 WPF 中。当我创建发布版本时,我遇到了这个问题。我能否为 UWP 创建构建并进行验证?
  • 是的,您可以为 UWP 创建构建。 docs.microsoft.com/en-us/windows/uwp/packaging/…
【解决方案2】:

我在 Microsoft 的 C++/WinRT 项目中提交了一个 Github 问题,我使用它来访问相同的 API,并遇到了问题。

https://github.com/microsoft/cppwinrt/issues/999#issuecomment-897675623

没有解决方案,但“这通常发生在父窗口设置不正确时。” 在这种情况下,我不知道如何正确设置父窗口,因为 API 不会在弹出窗口上公开任何句柄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多