WMI类的特性用C#和VBS返回不同的值......哪一个是正确的?

时间:2015-07-24 09:34:20

标签: c# vbscript wmi

我在C#中有一个类,它从WMI类“SKU”获取名为root\\Microsoft\\SqlServer\\ComputerManagement11:SqlServiceAdvancedProperty的特性 如

  

PropertyName:SKU PropertyNumValue:2702571241

但是当我通过VB Script获取相同的属性时,结果如下。

  

PropertyName:SKU PropertyNumValue:-1592396055

哪个值正确?

它发生了什么转换?

1 个答案:

答案 0 :(得分:0)

值相同,是一个四字节(DWORD)值,以十六进制显示为A115F6E9

您的C#代码将此视为无符号整数,而VBScript将其视为签名整数。您可以在各自的语言中使用这两个值。

如果要将结果与常量进行比较,则应使用两种语言中的HEX表示法定义常量,例如C#中的0xA115F6E9和VBScript中的&HA115F6E9

事实上,Eric Lippert刚才写了an article,解释了如何在VBScript中将负数转换为Hex值。