C# 检测Windows应用商店是否可用
我的目标是建议用户从桌面应用程序安装应用程序的商店版本,但我需要知道用户是否可以这样做(例如,其Windows 10+,商店可用) 我可以很容易地检测到Windows 10+ 问题是有许多SKU,如Windows Server和Windows LTSB,它们没有存储,但提供基本相同的API 到目前为止,我所尝试的:C# 检测Windows应用商店是否可用,c#,windows-store,C#,Windows Store,我的目标是建议用户从桌面应用程序安装应用程序的商店版本,但我需要知道用户是否可以这样做(例如,其Windows 10+,商店可用) 我可以很容易地检测到Windows 10+ 问题是有许多SKU,如Windows Server和Windows LTSB,它们没有存储,但提供基本相同的API 到目前为止,我所尝试的: 尝试创建Windows.Management.Deployment.PackageManager的实例 功能 前者在Windows Server上取得了成功,尽管缺少存储 后者虽
创建尝试
Windows.Management.Deployment.PackageManager的实例
- 功能
public static bool IsStoreAvailable()
{
using (var shell = PowerShell.Create())
{
shell.AddScript("Get-AppxPackage -Name Microsoft.StorePurchaseApp");
var result = shell.Invoke();
return result.Any();
}
}
这就是我得到的结果:
Package-storePackage=packageManager.findpackagesfourser(userSecurityId:string.Empty,packageFamilyName:“Microsoft.StorePurchaseApp_8wekyb3d8bbwe”).FirstOrDefault();返回存储包!=无效代码>很好,你已经开始工作了,但是,我不喜欢packageFamilyName中的随机部分。。。它很可能会崩溃。这不是随机的——它是Microsoft发布者ID。如果发布者要更改,PFN也必须更改,因此这里没有额外的脆弱性。
public static bool IsStoreAvailable()
{
using (var shell = PowerShell.Create())
{
shell.AddScript("Get-AppxPackage -Name Microsoft.StorePurchaseApp");
var result = shell.Invoke();
return result.Any();
}
}