Windows 安全弹出窗口出现在主应用程序窗口后面
Posted
技术标签:
【中文标题】Windows 安全弹出窗口出现在主应用程序窗口后面【英文标题】:Windows security popup appears behind the main application window 【发布时间】: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 应用程序)。你有什么发现吗? 【参考方案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 不会在弹出窗口上公开任何句柄。
【讨论】:
以上是关于Windows 安全弹出窗口出现在主应用程序窗口后面的主要内容,如果未能解决你的问题,请参考以下文章