2011-09-19 102 views
0

認爲這是註冊表我的目標重點:獲取註冊表項的十六進制值

[HKEY_CURRENT_USER\System\Majid\0] 
"GUID"=hex:60,de,2a,56,51,b2,e0,11,80,01,44,45,53,54,00,00 

,你可以看到GUID有一個十六進制值,我想講一個VB腳本去這個鍵並將其十六進制數據存儲到變量中。

例如,如果目標變量是「目標」,那麼它的值應該是「60,de,2a,56,51,b2,e0,11,80,01,44,45,53,54,00,00 「

任何幫助,非常感謝

回答

2

這可能是因爲你還沒有回答的原因是你的問題的前提是,如果不是有缺陷的誤導。這個問題似乎暗示你在詢問一個十六進制數字,但實際上你在問二進制數據。從註冊表導出二進制值時,生成的.reg文件按照您的示例對十六進制值進行編碼。您可能會也可能不會意識到這一點,但它可能是解決您的問題的絆腳石。

現在回答「我如何將二進制值轉換爲十六進制字符串表示形式?」

以下代碼爲我完成了這項工作。我只是偶爾使用vbscript,所以請原諒這種sl iness。

Dim objRegistry, target, output 
Set objRegistry = CreateObject("Wscript.shell") 
target = objRegistry.RegRead("HKCU\System\Majid\0\GUID") 
output = "" 
for k = LBound(target,1) To UBound(target,1) 
    output = output & hex(target(k)) & "," 
next 
WScript.echo output 

這是否適合您?

+0

嗨jqcAngel,是的,它的作品,感謝您的幫助。做得好的人。但是我有一個很小的問題,認爲十六進制數據是「60,de,2a,56,51,b2,e0,11,80,01,44,45,53,54,00,00」,這個腳本會在結尾處放上一個「,」,然後在最後00後有一個「,」。如何解決它?還有什麼方法可以顯示小寫字母而不是大寫字母? – Nofuzy

+0

嗨jqcAngel,另一個小問題,你可以在我的例子中看到,兩個最新的十六進制值是兩個零「00」,但你的腳本只顯示一個零,如下所示:53,54,0,0,。你能修好嗎? – Nofuzy

+1

爲什麼你使用VBScript如果你不舒服調整我的例子來實現你的目標? 將下面的在該文件的頂部: '功能PadDigits(N,totalDigits) PadDigits =右(字符串(totalDigits, 「0」)和N,totalDigits) 端功能' 然後改變輸出分配行到: 輸出=輸出&paddigits(0,十六進制(目標(k)))' – jqcAngel

0

今天寫了這些。我仍然需要找出代碼中「,\」的位置,但是這個會取REG_MULTI_SZ值並將其轉換爲正確的十六進制結果,如.reg文件所示。

'##### READ A REG_MULTI_SZ VALUE CONVERT TO HEX ##### 

strComputer = "." 

Dim fso 
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 

Dim oShell 
Set oShell = WScript.CreateObject("Wscript.Shell") 

Const HKEY_LOCAL_MACHINE = &H80000002 

strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv") 


regHive = "HKLM" 
regKey = "Software\template\templateL2" 
regValueName = "SAMPLE-Multi_String" 
regPath = regHive & "\" & regKey & "\" & regValueName 

regValue = oShell.RegRead(regPath) 

res = "" 
prefix = "hex(7):" 
For Each item In regValue 
data = data & item & vbcrlf 
     For i=1 To Len(item) 
      r = HexIt(Mid(item,i,1)) 
      res = res & r 
     Next 
     res = res & "00,00," 'NEW LINE/ENTRY 
    Next 
     res = res & "00,00" 'FINAL COMPLETION 



'CONVERT EACH CHARACTER TO ASCII THEN TO HEX, ADD ",00," BETWEEN EACH VALUE 
Function HexIt(data) 
    a = Asc(data) 
    h = Hex(a) 
    HexIt = h & ",00," 
End Function 


WScript.Echo "ACTUAL DATA IN GUI : " & vbCrLf & data & vbCrLf 
WScript.Echo "HEX REPRESENTATION : " & vbCrLf & res & vbCrLf 

WScript.Echo "REG FILE VALUE  : " & vbCrLf & prefix & res & vbCrLf 
0

這是一個DWORD

'##### READ A DWORD VALUE CONVERT TO HEX ##### 

strComputer = "." 

Dim fso 
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 

Dim oShell 
Set oShell = WScript.CreateObject("Wscript.Shell") 

strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv") 

regHive = "HKLM" 
regKey = "Software\template\templateL2" 
regValueName = "SAMPLE-Dword" 
regPath = regHive & "\" & regKey & "\" & regValueName 

regValue = oShell.RegRead(regPath) 'SPECIFY YOUR HIVE\KEY\VALUE HERE 
res = "" 
If Len(regvalue) Mod 2 = 0 Then 
    res = "0x" 
    leading0 = "" 
Else 
    res = "0x0" 
    leading0 = "0" 
End If 

WScript.Echo "INPUT DATA IN GUI : " & Hex(regValue) 
WScript.Echo "HEX REPRESENTATION: " & res & Hex(regvalue) 
WScript.Echo "REG FILE VALUE : " & "dword:" & leading0 & Hex(regvalue) 
0

一爲REG_EXPAND_SZ

'############# READ REG_EXPAND_SZ ########## 
strComputer = "." 

Dim fso 
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 

Dim oShell 
Set oShell = WScript.CreateObject("Wscript.Shell") 

strComputer = "." 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv") 


regHive = "HKLM" 
regKey = "Software\template\templateL2" 
regValueName = "Expandable_String" 
regPath = regHive & "\" & regKey & "\" & regValueName 

regValue = oShell.RegRead(regPath) 
res = "" 
prefix = "hex(2):" 

     For i=1 To Len(regValue) 
      r = HexIt(Mid(regValue,i,1)) 
      res = res & r 
     Next 
     res = res & "00,00" 'NEW LINE/ENTRY 



WScript.Echo "INPUT DATA IN GUI : " & regValue 
WScript.Echo "HEX REPRESENTATION: " & res 
WScript.Echo "REG FILE VALUE : " & prefix & res 


'CONVERT EACH CHARACTER TO ASCII THEN TO HEX, ADD ",00," BETWEEN EACH VALUE 
Function HexIt(data) 
    a = Asc(data) 
    h = Hex(a) 
    HexIt = h & ",00," 
End Function