昨天发布的 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 上运行:
调用 WMI 查询 Win32_OperatingSystem 并检查 Name 属性,该属性仅显示“Windows 11”。这是不完整的(它不包括“Enterprise”等 SKU),并且 WMI 相对较慢且稍显脆弱,因此对于我的用例而言,这不是一个可接受的解决方案。
检查内部版本号是否高于 21996(测试版)或 22000(首次公开发布)。如上所述,这不包括 SKU,并且需要一些手动 jiggery-pokery 才能构建完整的字符串。
运行sysinfo并解析输出。这非常慢,而且可能很脆弱(我没有检查过,但输出可能会本地化为不同的语言)。
winver知道,但它是一个 GUI 应用程序,所以我无法以编程方式精确查询它。
对于如何以高效且完整的方式从我的操作系统中获取字符串“Windows 11 Enterprise”(或“Windows 11 Pro”等,视情况而定),是否有人有任何其他想法?WMI、sysinfo 和 winver 从哪里获取它?
我需要从 .NET 库执行此操作,但 P/Invokes/本机函数调用是可接受的解决方案。
我正在尝试重新创建Twitter iOS应用的一部分以学习SwiftUI,并且想知道如何动态地将一个视图的宽度更改为另一视图的宽度。就我而言,使下划线与“文本”视图的宽度相同。
我已附上屏幕截图,以尝试更好地解释我的意思。任何帮助将不胜感激,谢谢!
这也是我到目前为止的代码:
import SwiftUI
struct GridViewHeader : View {
@State var leftPadding: Length = 0.0
@State var underLineWidth: Length = 100
var body: some View {
return VStack {
HStack {
Text("Tweets")
.tapAction {
self.leftPadding = 0
}
Spacer()
Text("Tweets & Replies")
.tapAction {
self.leftPadding = 100
}
Spacer()
Text("Media")
.tapAction {
self.leftPadding = 200
}
Spacer()
Text("Likes")
}
.frame(height: 50)
.padding(.horizontal, 10)
HStack {
Rectangle()
.frame(width: self.underLineWidth, height: 2, alignment: .bottom)
.padding(.leading, leftPadding)
.animation(.basic())
Spacer()
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个"经典桌面".NET项目,它引用Microsoft.Build了NuGet和System.IO.Compression/ System.IO.Compression.FileSystem或.NET SDK/GAC中的15.1 .
我正在尝试将其升级到Microsoft.Build15.3.
Microsoft.Build15.3引入了对System.IO.Compression4.1.2.0 的依赖.System.IO.Compression.NET Framework中的版本是4.0.0.0.
如果我像这样编译,我收到一个警告,无法解决程序集冲突,但我的代码工作:
警告MSB3277:发现无法解析的同一依赖程序集的不同版本之间发生冲突.当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出.
将构建日志详细程度设置为Detailed会产生此输出:
1> There was a conflict between "System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
1> "System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was chosen because it was primary and "System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was not.
1> References which depend on "System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.dll].
1> C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.dll
1> Project file item includes which …Run Code Online (Sandbox Code Playgroud) 我为我制作的udp服务器程序的此代码提供了错误的文件描述符错误
from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 890))
while True:
(c,a) = s.recvfrom(1024)
msg = 'thanks for requesting'
s.sendto(msg,a)
s.close()
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息是
Traceback (most recent call last):
File "udpserv.py", line 7, in <module>
(c,a) = s.recvfrom(1024)
File "/usr/lib/python2.7/socket.py", line 174, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我怎么得到这个错误以及如何解决呢?