Comment ajouter le test 32/64 bit à votre menu contextuel
Créez un fichier texte nommé exetest.reg et contenant ce code :
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\""
Créez un fichier texte nommé x86TestStart.bat
contenant juste cette ligne de code et le sauvegarder dans C:\temp :
c:\temp\x86or64.vbs %1
Créez un fichier texte nommé x86or64.vbs
contenant ce code et l'enregistrer dans C:\temp :
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
Double-cliquez sur le fichier exetest.reg : une nouvelle clé sera ajoutée dans le registre de Windows :
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
Il apparaîtra comme " Test 32/64 bits "dans le menu contextuel lors d'un clic droit sur un fichier exécutable.
En cliquant sur l'élément, le fichier de traitement par lots sera lancé. c:\\temp\\x86TestStart.bat\
qui lance le fichier VBscript x86or64.vbs
qui lit la signature de l'exe et montre le résultat.
Si vous ne pouvez pas ou ne voulez pas modifier le registre, copiez simplement le fichier .vbs dans la barre QuickLaunch et faites glisser l'exécutable dessus.
0 votes
Cette question est similaire Cependant, il faut un peu de travail pour le vérifier.
4 votes
@Guillaume : Les images exécutables ne sont pas des processus. Le gestionnaire de tâches n'affiche que les processus.
0 votes
Comment puis-je déterminer si une application que j'installe est 32 ou 64 bits ?
0 votes
C'est bizarre que le clic droit sur le fichier > Propriétés ne donne pas cette information.