你好 @辉夜 ,
感谢你的来信。
我理解你的目标。
关键在于,访问 LampArray API 需要有效的 Package Identity,而这个身份是在进程启动时由 Windows 应用模型分配的。它并不是可以通过 P/Invoke、COM 调用或未公开的 Shell API 手动注册、注入或模拟的。Windows 会在操作系统层面进行身份验证,未打包的进程不会获得所需的功能权限。
官方支持且推荐的方式是使用 MSIX 对现有的 WPF 应用进行打包(通过 Visual Studio 的 Windows Application Packaging Project)。这并不需要将应用重写为 UWP。你的 WPF EXE 本身保持不变,打包的作用是为其提供必要的身份,并允许你在清单文件中声明相应的灯效功能,使 Dynamic Lighting 服务能够识别并信任你的应用。
目前没有受支持的方法可以“伪造”或手动为未打包的进程分配 Package Identity。打包是设计上的标准路径,同时也能确保稳定性、安全性以及对未来 Windows 更新的兼容性。
希望这些信息对你有所帮助!如果我的回答对你有帮助,请按照此处的说明操作,让其他遇到同样问题的人也能受益: https://learn.microsoft.com/zh-cn/answers/support/accept-answer