Windows安全弹出窗口出现在主应用程序窗口后面。

5

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

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

}

RequestCreateAsync方法会打开一个弹出窗口,要求进行生物识别或输入pin码。该弹出窗口在MainWindow后面的截图中可见。

我没有任何关于此弹出窗口的参考,无法将其置于前台。同时,我在MainWindow的Loaded方法中调用此方法,以确保MainWindow已完全加载。

弹出窗口定位问题 当前问题

期望的位置 期望


你能展示一下你正在使用的代码吗?我的意思是,我以前从未使用过这个API/功能,但即使我想测试它,我也不知道该怎么做。 - TheGeneral
@TheGeneral 我已经更新了问题,附上了代码和期望的结果。 - Heena
1
@Heena,你发了这个问题后找到答案了吗?我也遇到了这个问题并正在寻找解决方案。 - Attila Szász
1
@Heena 我也遇到了同样的问题,尽管我的应用程序以不同的方式访问API(它是一个使用WinRT/C++来访问KeyCredentialManager的Java应用程序)。你找到了什么吗? - Alex Suzuki
2个回答

1
我在Github上提交了一个问题,关于Microsoft的C++/WinRT项目,我使用它来访问同样的API,但是遇到了问题。

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

没有解决方案,但是“通常是由于父窗口未正确设置。”在这种情况下,我不知道如何正确设置父窗口,因为API没有公开任何有关弹出窗口的句柄。


0

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

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

如果这不能解决你的问题,请尝试使用Microsoft Passport登录


函数是异步的 private async void MainWindow_LoadedAsync(object sender, RoutedEventArgs e) - Heena
我已经检查了您分享的链接。它是在UWP中,而我的应用程序是在WPF中。当我创建一个发布版本时,我遇到了这个问题。我能否创建UWP版本并验证相同的问题? - Heena
是的,您可以为UWP创建构建。https://learn.microsoft.com/en-us/windows/uwp/packaging/packaging-uwp-apps#sideload-your-app-package - Logan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接