相关疑难解决方法(0)

检测.net中的Windows版本

如何在.net中检测Windows操作系统版本?

我可以使用什么代码?

.net c# windows operating-system

140
推荐指数
10
解决办法
10万
查看次数

如何在 Windows 11 中找到 Windows 产品名称?

昨天发布的 Windows 11 几乎在所有地方都将自己报告为 Windows 10.0 -RtlGetVersion说是 10.0,如果你问VerifyVersionInfo你是否是 11.0 或更高版本,它会说不是。

似乎没有新的 GUID 可以塞入 app.manifest 中来表示“嘿,我支持 Windows 11”,就像 Windows 7、8、8.1 和 10 那样。

目前,我依靠HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName告诉我当前的 Windows 版本是什么,但在我升级后的计算机上,它仍然显示“Windows 10 Enterprise”,而不是“Windows 11 Enterprise”。

注册表中似乎只有一个位置包含文本“Windows 11”,即 BCD 部分(启动配置),它也可以重命名,所以我不想碰它。

到目前为止,我只确定了几种方法来判断我是否在 Windows 11 上运行:

  1. 调用 WMI 查询 Win32_OperatingSystem 并检查 Name 属性,该属性仅显示“Windows 11”。这是不完整的(它不包括“Enterprise”等 SKU),并且 WMI 相对较慢且稍显脆弱,因此对于我的用例而言,这不是一个可接受的解决方案。

  2. 检查内部版本号是否高于 21996(测试版)或 22000(首次公开发布)。如上所述,这不包括 SKU,并且需要一些手动 jiggery-pokery 才能构建完整的字符串。

  3. 运行sysinfo并解析输出。这非常慢,而且可能很脆弱(我没有检查过,但输出可能会本地化为不同的语言)。

  4. winver知道,但它是一个 GUI 应用程序,所以我无法以编程方式精确查询它。

对于如何以高效且完整的方式从我的操作系统中获取字符串“Windows 11 Enterprise”(或“Windows 11 Pro”等,视情况而定),是否有人有任何其他想法?WMI、sysinfo 和 winver 从哪里获取它?

我需要从 .NET 库执行此操作,但 P/Invokes/本机函数调用是可接受的解决方案。

.net c# windows .net-core windows-11

20
推荐指数
2
解决办法
9069
查看次数

如何检测Windows 10 S?

Windows 10 S是一个特殊的Windows版本,简化了安全性和卓越性能.基本上,您只能从Microsoft Store安装应用程序.

您可以通过桌面桥接器向商店提供普通桌面应用程序,这样本身就不是一个大问题.但是,Windows 10 S对Store应用程序施加了额外的限制,这可能会导致它们在启动期间崩溃.

我收到了商店申请审核结果的反馈.

应用策略:10.1.2.1不准确的功能:Windows 10S

发展商须知:

您的应用程序无法在Windows 10 S上运行,应用程序终止,恕不另行通知用户.在Windows 10 S上无法运行的应用程序必须支持正常关机.

重现步骤:1.在Windows 10S上启动应用程序.2.请注意,您的应用程序在Windows 10 S上不起作用,应用程序终止,恕不另行通知用户.

请务必测试适用于Windows 10 S的应用:https: //docs.microsoft.com/windows/uwp/porting/desktop-to-uwp-test-windows-s 经测试的设备:Windows 10桌面

基本上我需要做的是检测Windows 10 S并通知用户它不受支持.

.net c# windows-10 uwp desktop-bridge

2
推荐指数
1
解决办法
1051
查看次数