运行WindowsAppSDK推送通知示例时遇winrt::hresult_class_not_registered错误
解决WindowsAppSDK推送通知示例中
PushNotificationManager::Default()的CLASS_NOT_REGISTERED异常 确认未打包应用的WindowsAppSDK运行时初始化顺序
未打包应用必须先完成WindowsAppSDK运行时初始化,再调用PushNotificationManager::Default()。检查代码中是否在访问推送通知管理器前执行了初始化逻辑,确保调用顺序正确:auto initResult = Microsoft::WindowsAppSDK::Initialize(); if (FAILED(initResult)) { // 处理初始化失败,比如输出错误码 return -1; } // 之后再调用 PushNotificationManager::Default()同时验证初始化返回的HRESULT是否成功,避免因初始化失败导致后续组件无法加载。
匹配WindowsAppSDK运行时与NuGet包版本
确保系统上安装的WindowsAppSDK运行时版本,与项目中引用的Microsoft.WindowsAppSDK NuGet包版本完全一致:- 打开Visual Studio的NuGet包管理器,查看已安装的WindowsAppSDK包版本;
- 在Windows设置->应用->已安装应用中,找到“Windows App SDK Runtime”,确认版本与NuGet包匹配;
- 若版本不匹配,要么更新NuGet包到运行时对应版本,要么安装对应版本的WindowsAppSDK运行时。
手动注册推送通知COM组件
未打包应用无法自动注册所需COM组件,需手动执行注册:- 以管理员身份打开命令提示符;
- 找到WindowsAppSDK运行时安装路径(通常在
C:\Program Files\WindowsApps\Microsoft.WindowsAppSDK_[版本号]\[架构]下,替换[版本号]和[架构]为实际值,比如1.4.231008000\x64); - 执行命令注册组件:
regsvr32 "C:\Program Files\WindowsApps\Microsoft.WindowsAppSDK_1.4.231008000_x64__8wekyb3d8bbwe\PushNotificationManager.dll"
确保命令执行无报错,若提示找不到文件,检查路径是否正确。
验证目标系统与项目配置兼容性
推送通知功能要求Windows 10 1903及以上或Windows 11系统,同时项目需正确配置目标平台:- 右键项目->属性->常规,确认“Windows SDK版本”和“目标平台版本”设置为支持的系统版本;
- 检查测试系统的Windows版本是否满足要求,可通过
winver命令查看。
内容的提问来源于stack exchange,提问作者Shivam Mishra
相关产品推荐
相关产品推荐

