当被朋友邀请参加游戏时,Xbox Game Bar(以及之前的)Xbox Console Companion 需要能够在您接受邀请时启动该应用程序。
我的电脑上安装了 2 个《盗贼之海》副本,一个是 MS Store,一个是 Steam。
Xbox Console Companion 推出了“正确”的版本,在我看来,它是 MS Store。
Xbox Game Bar 启动的是“错误”的 Steam 副本。
看起来这两个应用程序使用了两种不同的分辨率方法来确定运行哪个游戏副本。
这些应用程序各自使用什么机制来解析已安装的游戏?
DLL 注册?注册表项?协议注册到应用程序?
答案1
部分答案:
游戏栏,非 MSStore 游戏:
对于非 MSStore 游戏,GameBar 拥有基于内部 Xbox TitleID 的注册表项集合。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\XboxLive
包含按标题 ID 命名的蜂巢。
例如HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\XboxLive\804980065
对应于 Sea of Thieves Insider。
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\XboxLive\1717113201
对应《盗贼之海》。
在这些注册表节点内部,有一个协议引用,当存在此覆盖/外部游戏密钥时执行该协议引用。
AcceptProtocol
=steam://run/1172630//?cmd=accept_{1}_{2}_{0}
和
JoinProtocol
=steam://run/1172630//?cmd=join_{2}_{1}_{0}
据推测,Accept 是在接受邀请时使用的,而 Join Protocol 是在未经邀请加入游戏时启动的。
steam:// 协议中的 ID 是蒸汽标题的appid。
游戏栏、MSStore游戏:
Xbox 主机伴侣、MSStore 游戏:
Xbox 主机伴侣,非 MSStore 游戏:
我认为这是不被支持的。