web-dev-qa-db-fra.com

Comment convertir un VBScript en un fichier exécutable (EXE)?

J'avais cherché des informations pour convertir un (*.vbs) de VBScript en un exécutable et réalisé que la plupart des outils disponibles encapsulaient le script dans l'exécutable. J'ai essayé quelques outils et cela n'a pas fonctionné aussi bien que prévu. J'ai essayé IExpress (sous Windows XP) pour créer le fichier CAB d'extraction automatique Win32, mais l'invocation ne s'est pas déroulée correctement sur les machines Windows 7.

Je cherche donc un moyen de compiler les vbs en exe. J'essaie de porter mon script actuel dans VB Express 2008, mais je n'ai aucune connaissance préalable de Visual Basic ici. Il y a beaucoup d'erreurs mais j'essaie toujours.

Quelqu'un peut-il s'il vous plaît des conseils sur la façon dont je devrais procéder à partir d'ici? Je veux dire, un archive auto-extractible serait-il le chemin à parcourir au lieu d'un fichier exécutable autonome ? Mais dis comme Winzip, je ne sais pas comment le faire exécuter le script après l'extraction.

Des idées?

16
Alex Cheng

Il n'y a aucun moyen de convertir un VBScript (fichier .vbs) en un exécutable (fichier .exe) car VBScript est pas un langage compilé. Le processus de conversion du code source en code exécutable natif s'appelle "compilation" , et il n'est pas pris en charge par les langages scripting tels que VBScript.

Certes, vous pouvez ajouter votre script à une archive auto-extractible en utilisant quelque chose comme WinZip, mais tout ce que vous ferez, c'est de le compresser. Il est douteux que la taille du fichier se réduise sensiblement, et comme il s'agit d'un fichier en texte brut pour commencer, il n'est vraiment pas nécessaire de le compresser du tout. Le seul but d'une archive auto-extractible est qu'un logiciel de décompression (comme WinZip) n'est pas nécessaire sur l'ordinateur de l'utilisateur final pour pouvoir extraire ou "décompresser" le fichier. Si ce n'est pas compressé en premier lieu, c'est un point discutable.

Comme vous l'avez dit, il existe également des moyens de regrouper les fichiers de code VBScript dans un fichier exécutable autonome, mais il ne s'agit que de wrappers qui exécutent automatiquement le script (dans son état non compilé actuel) lorsque l'utilisateur clique deux fois sur le fichier .exe. Je suppose que cela peut avoir des avantages, mais cela ne ressemble pas à ce que vous recherchez.

Afin de convertir réellement votre VBScript en un fichier exécutable, vous devrez le réécrire dans un autre langage qui peut être compilé}.Visual Basic 6 (la dernière version de VB, avant l’introduction du .NET Framework) est extrêmement similaire en syntaxe à VBScript, mais prend en charge la compilation en code natif. Si vous déplacez votre code VBScript vers VB 6, vous pouvez le compiler dans un exécutable natif. L'exécution du fichier .exe nécessite que l'utilisateur dispose du VB 6 Bibliothèques d'exécution installées, mais elles sont intégrées à la plupart des versions de Windows actuellement trouvées à l'état sauvage. 

Alternativement, vous pouvez aller de l'avant et accéder à Visual Basic .NET , qui reste quelque peu sa syntaxe est semblable à celle de VB 6 et à VBScript une migration par copier/coller). Les programmes VB.NET seront également compilés en un fichier .exe, mais ils nécessitent que le runtime .NET Framework soit installé sur l'ordinateur de l'utilisateur. Heureusement, cela est également devenu monnaie courante et il peut être facilement redistribué si vos utilisateurs ne l’ont pas. Vous avez mentionné cette voie dans votre question (le portage de votre script actuel vers VB Express 2008, qui utilise VB.NET), mais que vous obteniez de nombreuses erreurs. C'est ce que je veux dire par le fait d'être loin d'une migration par copier/coller. Il existe quelques énormes différences entre VB 6/VBScript et VB.NET, malgré certaines similitudes syntaxiques superficielles. Si vous souhaitez obtenir de l'aide pour migrer sur votre VBScript, vous pouvez poser une question ici sur le dépassement de capacité. En fin de compte, c’est probablement la meilleure façon de faire ce que vous voulez, mais je ne peux pas vous promettre que ce sera simple.

18
Cody Gray

Vous pouvez utiliser le logiciel VBSedit pour convertir votre code VBS en fichier .exe. Vous pouvez télécharger une version gratuite d’Internet et installer vbsedit applilcation sur votre système et convertir les fichiers au format .exe.

Vbsedit est une bonne application pour VBscripter

12
Sultan

Plus d'informations

Pour trouver un compilateur, vous devez installer 1 version par réseau. Tapez une invite de commande.

dir c:\Windows\Microsoft.NET\vbc.exe /a/s

Windows Forms

Pour une version Windows Forms (pas de fenêtre de console et nous ne pouvons créer aucun formulaire - bien que vous puissiez le faire si vous le souhaitez). 

Compiler une ligne dans une invite de commande. 

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe "%userprofile%\desktop\VBS2Exe.vb"

Texte pour VBS2EXE.vb

Imports System.Windows.Forms 

Partial Class MyForm : Inherits Form 

Private Sub InitializeComponent() 


End Sub

Public Sub New() 

InitializeComponent() 

End Sub

Public Shared Sub Main() 

Dim sc as object 
Dim Scrpt as string

sc = createObject("MSScriptControl.ScriptControl")

Scrpt = "msgbox " & chr(34) & "Hi there I'm a form" & chr(34)

With SC 
.Language = "VBScript" 
.UseSafeSubset = False 
.AllowUI = True 
End With


sc.addcode(Scrpt)


End Sub

End Class

L'utilisation de ces paramètres facultatifs vous donne une icône et un manifeste. Un manifeste vous permet de spécifier exécuter normalement, exécuter élevé si administrateur, exécuter uniquement élevé. 

/ win32icon: spécifie un fichier d'icône Win32 (.ico) pour les ressources Win32 par défaut. 

/ win32manifest: le fichier fourni est incorporé dans la section manifeste du PE de sortie. 

En théorie, le contrôle de compte d'utilisateur est désactivé, je ne peux donc pas tester, mais mettez ce fichier texte sur le bureau et appelez-le vbs2exe.manifest, enregistrez-le au format UTF-8. 

La ligne de commande 

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe /win32manifest:"%userprofile%\desktop\VBS2Exe.manifest" "%userprofile%\desktop\VBS2Exe.vb"

Le manifeste 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" 
  manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" 
  processorArchitecture="*" name="VBS2EXE" type="win32" /> 
  <description>Script to Exe</description> 
  <trustInfo xmlns="urn:schemas-Microsoft-com:asm.v3"> 
  <security> <requestedPrivileges> 
  <requestedExecutionLevel level="requireAdministrator" 
  uiAccess="false" /> </requestedPrivileges> 
  </security> </trustInfo> </Assembly>

Espérons qu’il fonctionnera maintenant UNIQUEMENT en tant qu’administrateur. 

Donne accès aux objets d'un hôte 

Voici un exemple donnant à vbscript l'accès à un objet .NET. 

Imports System.Windows.Forms 

Partial Class MyForm : Inherits Form 

Private Sub InitializeComponent() 


End Sub 

Public Sub New() 

InitializeComponent() 

End Sub 

Public Shared Sub Main() 

Dim sc as object
Dim Scrpt as string 

sc = createObject("MSScriptControl.ScriptControl") 

Scrpt = "msgbox " & chr(34) & "Hi there I'm a form" & chr(34) & ":msgbox meScript.state" 

With SC
.Language = "VBScript"
.UseSafeSubset = False
.AllowUI = True
.addobject("meScript", SC, true)
End With 


sc.addcode(Scrpt) 


End Sub 

End Class 

Pour intégrer les informations de version 

Téléchargez le fichier vbs2exe.res à partir de https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 et mettez-le sur le bureau. 

Téléchargez ResHacker à partir de http://www.angusj.com/resourcehacker

Ouvrez le fichier vbs2exe.res dans ResHacker. Modifier loin. Cliquez sur le bouton Compiler. Cliquez sur le menu Fichier - Enregistrer. 

Type 

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe" /t:winexe /win32manifest:"%userprofile%\desktop\VBS2Exe.manifest" /win32resource:"%userprofile%\desktop\VBS2Exe.res" "%userprofile%\desktop\VBS2Exe.vb"
3
David Candy

Voici quelques solutions possibles ... 

Je n'ai pas encore tout essayé moi-même, mais je les essayerai tous bientôt. 

Remarque: Je n'ai aucun lien personnel ou financier avec ces outils. 

1) VB Convertisseur de script en EXE (non compilateur): (gratuit)
vbs2exe.com

L'exe produit semble être un véritable EXE. 

De leur site web: 

VBS to EXE est un convertisseur en ligne gratuit qui convertit non seulement vos fichiers vbs en exe, mais aussi: 

1- Cryptez le code source de votre fichier vbs en utilisant une clé de 128 bits.
2- Vous permet d'appeler l'API win32
3- Si vous avez des problèmes avec Windows Vista surtout quand UAC est activé, vous pouvez essayer VBS à EXE.
4- Plus besoin de wscript.exe pour exécuter votre vbs.
5- Votre script n'est jamais sauvegardé sur le disque dur comme d'autres convertisseurs. c'est un vrai exe pas un extracteur. 

Cette solution devrait fonctionner même si wscript/cscript n'est pas installé sur l'ordinateur. 

Fondamentalement, cela crée un vrai fichier .exe. Le fichier .exe créé contient un "moteur" qui remplace wscript/cscript et une copie chiffrée de votre code de script VB. Ce moteur de remplacement exécute votre code IN MEMORY sans appeler wscript/cscript pour le faire. 


2) Compiler et convertir VBS en EXE ...:
ExeScript

La version actuelle est la 3.5. 

Ce n'est pas une solution gratuite. Ils ont un procès de 15 jours. Après cela, vous devez acheter une licence pour 44,96 $ (Licence résidentielle/non commerciale) ou 89,95 $ (Licence commerciale/utilisation commerciale). 

Cela semble fonctionner de la même manière que la solution précédente.

Selon un post de forum, il y a:
Post: " Un fichier EXE a toujours besoin de Windows Scripting Host (WSH) ??

WSH n’est pas requis si l’option "Compiler" a été utilisée, car ExeScript
implémente son propre script hôte. ... 


3) Cryptez le script avec l’outil de chiffrement ".vbs to .vbe" de Microsoft. 

Apparemment, cela ne fonctionne pas pour Windows 7/8 et il est possible qu'il existe des moyens de "décrypter" le fichier .vbe. Au moment de la rédaction de ce document, je ne pouvais pas trouver de lien fonctionnel pour le télécharger. Si j'en trouve un, je l'ajouterai à cette réponse.

1
Kevin Fegan

Vous pouvez essayer VbsEdit. Obtenez la dernière version de VbsEdit http://www.vbsedit.com de Adersoft. Il s’agit d’un petit téléchargement, mais c’est un outil puissant pour créer et éditer des fichiers vbs et les convertir en fichiers exécutables sans décompresser en dossier temporaire. (sauf si vous obtenez une ancienne version telle que la version 4.xxx) J'utilise ce programme depuis 2008 et il est gratuit à évaluer pour toujours, mais vient avec un rappel pour l'activer et chaque fois que vous démarrez votre script à partir de la fenêtre vbsedit, vous aurez attendre quelques secondes, ou vous pouvez l'acheter pour 60 $ pour éliminer ces ennuis mineurs.
Contrairement à ScriptCryptor, l'exe converti n'aura aucune limitation si vous évaluez encore, il s'exécutera sans aucune fenêtre supplémentaire indésirable.

0
Ronnie Matthews

Vous pouvez le faire avec PureBasic et MsScriptControl

Tout ce que vous avez à faire est de coller le MsScriptControl dans l’éditeur Purebasic et d’ajouter quelque chose comme ceci ci-dessous

InitScriptControl()
SCtr_AddCode("MsgBox 1")
0
Jenna