You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET 7环境的Electron.NET应用中调用Windows Hello的技术问题求助

在.NET 7 Electron.NET应用中集成Windows Hello的实践方案

我最近帮朋友搞定了在基于.NET 7的Electron.NET应用里实现Windows Hello的需求——我们只需要用它来获取简单的键值对,过程踩了不少坑,分享下完整的思路和解决办法:

最初的碰壁尝试

  • 一开始我们翻遍了NuGet上的包,愣是没找到适配.NET 7的Windows Hello专属包;那些Fido2、WebAuthn类库功能太全面了,我们只需要调用Windows Hello的核心能力,用它们有点杀鸡用牛刀的感觉。
  • 因为之前我们通过导入user32.dll里的函数搞定过打开文件资源管理器的需求,所以想照搬这个思路。甚至特意用PowerShell命令导出了user32.dll的所有函数列表:
    powershell "dumpbin /exports C:\Windows\System32\user32.dll | tee user32_functions.txt"
    
    结果翻来覆去看了好多遍,里面完全没有和Windows Hello相关的接口,这条路直接走死了。

找到解决方案后的小插曲

后来我们终于找到了可行的实现方案,但编译时突然抛出了这个错误:

Referencing a Windows metadata component directly when targeting .NET 5 or higher is not supported.

这个问题修复起来很简单,只需要在项目的.csproj文件里明确指定目标Windows版本就行。具体来说,修改或添加如下配置:

<PropertyGroup>
  <TargetFramework>net7.0-windows</TargetFramework>
  <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>

这里要注意,Windows Hello仅支持Windows 10及以上系统,所以TargetPlatformMinVersion建议设置为Win10的最低兼容版本(比如17763,对应Win10 1809)。

补充说明

其实Windows Hello的相关API属于Windows Runtime(WinRT)范畴,并不是传统的Win32 API(比如user32.dll里的那些),所以之前盯着user32.dll找肯定是找不到的。配置好项目的Windows目标版本后,就可以直接引用Windows.Security.Credentials.UI等命名空间下的类,轻松实现获取Windows Hello提供的键值对功能了。

内容的提问来源于stack exchange,提问作者jamie yello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:32:50