So fügen Sie einen 32/64-Bit-Test zu Ihrem Kontextmenü hinzu
Erstellen Sie eine Textdatei mit dem Namen exetest. reg und diesen Code enthalten:
Windows Registry Editor Version 5.00
; What will appear in the contextual menu when right-clicking on a .exe file
[HKEY_CLASSES_ROOT\exefile\shell\command32_64]
@="32/64 bit test"
; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
@="\"c:\temp\x86TestStart.bat\" \"%1\""
Erstellen Sie eine Textdatei namens x86TestStart.bat
, die genau diese Codezeile enthält, und speichern Sie sie in C:\temp:
c:\temp\x86or64.vbs %1
Erstellen Sie eine Textdatei namens x86or64.vbs
, die diesen Code enthält, und speichern Sie sie in C:\temp:
Doppelklicken Sie auf exetest. reg-Datei: ein neuer Schlüssel wird in der Windows-Registry hinzugefügt:
rem Reading binary file in VBScript: http://stackoverflow.com/questions/21249440/modify-first-two-bytes-of-a-file-using-vbscript
rem Info on executables: https://dmoj.ca/problem/exe
rem x86/64 signature is located dinamycally; its position is addressed
rem from bytes in 0x3C-0x3D position.
rem Possible signatures;
rem "PE..L" (hex code: 50.45.00.00.4C) = 32 bit
rem "PE..d†" (hex code: 50.45.00.00.64.86) = 64 bit
' ------------------------------------
' Source code by Jumpkack 2015
' ------------------------------------
' Read all arguments from command line:
Set args = Wscript.Arguments
' Store first argument (full path to file)
FileName = args(0)
' Find address of executable signature:
FirstChars = readBinary(FileName)
FirstChars = FirstChars
Addr1 = asc(mid(FirstChars,61,1))
Addr2 = asc(mid(FirstChars,62,1))
AddrFinal = Addr2*256 + Addr1 + 1
' Check signature:
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "4C" then Wscript.Echo Filename & " is a 32 bit executable."
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "64" then Wscript.Echo Filename & " is a 64 bit executable."
Function readBinary(path)
Dim a, fso, file, i, ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.getFile(path)
If isNull(file) Then
wscript.echo "File not found: " & path
Exit Function
End If
Set ts = file.OpenAsTextStream()
'a = makeArray(file.size)
a=""
i = 0
While (Not ts.atEndOfStream) and (i<60000)
'a(i) = ts.read(1)
a = a + ts.read(1)
i = i + 1
Wend
ts.close
readBinary = a
End Function
Er erscheint als “ 32/64 bit test” im Kontextmenü, wenn Sie mit der rechten Maustaste auf eine ausführbare Datei klicken.
Durch Klicken auf den Eintrag wird die Batch-Datei `c:\temp\x86TestStart.bat# So fügen Sie einen 32/64-Bit-Test zu Ihrem Kontextmenü hinzu
Erstellen Sie eine Textdatei mit dem Namen exetest. reg und diesen Code enthalten:
Windows Registry Editor Version 5.00
; What will appear in the contextual menu when right-clicking on a .exe file
[HKEY_CLASSES_ROOT\exefile\shell\command32_64]
@="32/64 bit test"
; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
@="\"c:\temp\x86TestStart.bat\" \"%1\""
Erstellen Sie eine Textdatei namens x86TestStart.bat
, die genau diese Codezeile enthält, und speichern Sie sie in C:\temp:
c:\temp\x86or64.vbs %1
Erstellen Sie eine Textdatei namens x86or64.vbs
, die diesen Code enthält, und speichern Sie sie in C:\temp:
Doppelklicken Sie auf exetest. reg-Datei: ein neuer Schlüssel wird in der Windows-Registry hinzugefügt:
rem Reading binary file in VBScript: http://stackoverflow.com/questions/21249440/modify-first-two-bytes-of-a-file-using-vbscript
rem Info on executables: https://dmoj.ca/problem/exe
rem x86/64 signature is located dinamycally; its position is addressed
rem from bytes in 0x3C-0x3D position.
rem Possible signatures;
rem "PE..L" (hex code: 50.45.00.00.4C) = 32 bit
rem "PE..d†" (hex code: 50.45.00.00.64.86) = 64 bit
' ------------------------------------
' Source code by Jumpkack 2015
' ------------------------------------
' Read all arguments from command line:
Set args = Wscript.Arguments
' Store first argument (full path to file)
FileName = args(0)
' Find address of executable signature:
FirstChars = readBinary(FileName)
FirstChars = FirstChars
Addr1 = asc(mid(FirstChars,61,1))
Addr2 = asc(mid(FirstChars,62,1))
AddrFinal = Addr2*256 + Addr1 + 1
' Check signature:
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "4C" then Wscript.Echo Filename & " is a 32 bit executable."
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "64" then Wscript.Echo Filename & " is a 64 bit executable."
Function readBinary(path)
Dim a, fso, file, i, ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.getFile(path)
If isNull(file) Then
wscript.echo "File not found: " & path
Exit Function
End If
Set ts = file.OpenAsTextStream()
'a = makeArray(file.size)
a=""
i = 0
While (Not ts.atEndOfStream) and (i<60000)
'a(i) = ts.read(1)
a = a + ts.read(1)
i = i + 1
Wend
ts.close
readBinary = a
End Function
Er erscheint als “ 32/64 bit test” im Kontextmenü, wenn Sie mit der rechten Maustaste auf eine ausführbare Datei klicken.
Durch Klicken auf den Eintrag wird die Batch-Datei gestartet, die die VBscript-Datei x86or64.vbs
startet, die die exe-Unterschrift liest und das Ergebnis anzeigt.
Wenn Sie die Registry nicht manipulieren können oder wollen, kopieren Sie einfach die .vbs-Datei in der QuickLaunch-Leiste und ziehen Sie die ausführbare Datei darüber.