WMI class 属性 return 与 C# 和 VBS 的不同值...哪个是正确的?
WMI class properities return different values with C# and VBS...which one is correct?
我在 C# 中有一个 class,它从 WMI class "root\Microsoft\SqlServer\ComputerManagement11:SqlServiceAdvancedProperty
" 中获取名称为 SKU
的属性
作为
PropertyName : SKU PropertyNumValue : 2702571241
但是当我通过 VB 脚本获取相同的 属性 时,结果如下。
PropertyName: SKU PropertyNumValue: -1592396055
哪个值是正确的?
发生了什么转化?
值是相同的,一个四字节 (DWORD) 值,在十六进制中显示为 A115F6E9
。
您的 C# 代码将其视为无符号整数,而您的 VBScript 将其视为 有符号 整数。您可以在各自的语言中使用这两个值。
如果你想将结果与常量进行比较,你应该在两种语言中使用十六进制表示法定义常量,例如 C# 中的 0xA115F6E9
和 VBScript 中的 &HA115F6E9
事实上,Eric Lippert 不久前写过 an article 这篇文章,解释了如何在 VBScript 中将负数转换为十六进制值。
我在 C# 中有一个 class,它从 WMI class "root\Microsoft\SqlServer\ComputerManagement11:SqlServiceAdvancedProperty
" 中获取名称为 SKU
的属性
作为
PropertyName : SKU PropertyNumValue : 2702571241
但是当我通过 VB 脚本获取相同的 属性 时,结果如下。
PropertyName: SKU PropertyNumValue: -1592396055
哪个值是正确的?
发生了什么转化?
值是相同的,一个四字节 (DWORD) 值,在十六进制中显示为 A115F6E9
。
您的 C# 代码将其视为无符号整数,而您的 VBScript 将其视为 有符号 整数。您可以在各自的语言中使用这两个值。
如果你想将结果与常量进行比较,你应该在两种语言中使用十六进制表示法定义常量,例如 C# 中的 0xA115F6E9
和 VBScript 中的 &HA115F6E9
事实上,Eric Lippert 不久前写过 an article 这篇文章,解释了如何在 VBScript 中将负数转换为十六进制值。