了解VBScript AND运算符

时间:2014-05-06 02:27:22

标签: vbscript

我试图了解Microsoft的VBScript以检索Windows 8产品密钥:

http://gallery.technet.microsoft.com/scriptcenter/Backup-Windows-product-key-1a200645

我之前从未使用过VBScript,我对脚本代码感到困惑。任何人都可以帮助我理解脚本的开头:

Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)

我的理解是isWin8应该评估为0或1.然后表达式((isWin8和2)* 4)总是评估为0,因为(isWin8和2)应该总是0.显然我遗漏了一些东西理解脚本语言。但是什么?

1 个答案:

答案 0 :(得分:0)

Function ConvertToKey(Key)此函数通过KEY var传递一个键。

Const KeyOffset = 52此常量用于偏移双精度浮点(binary64)数中的位置。符号位:1位,指数宽度:11位,有效精度:53位(显式存储52位)

Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert声明变量并保留ram。

'Check if OS is Windows 8'你不喜欢评论吗?

isWin8 = (Key(66) \ 6) And 1'这会做一些棘手的数学运算。这个AND运算符(msgbox 3和6'为了它的乐趣)在两个表达式上执行逻辑连接。

Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)'KEY数组的第66个元素设置为自身AND(公共Const VK_CRSEL =& HF7),它是虚拟键码(CrSel键http://www.quadibloc.com/comp/scan.htm)。剩下的就是简单的数学。 :)