# VBS to EXE umwandeln, aber wie



## P_H_I_L (12. November 2007)

Hallo Zusammen,
habe nun ein recht einfaches VB Script geschrieben. Dieses soll nun am Desktop als Icon liegen, doch man soll den code nicht einsehen können.
am liebsten wäre mir wenn es eine EXE wäre...
kann man mittels freeware tool oder compilern eine Exe erzeugen?
kenn mich da eher weniger aus und wollte mal fragen...
hab auch schon  aber die software vbstoexe 1.0 die ich mir runtergeladen habe funktioniert nicht!

das ist eien konsolenanwendung, doch die blinkt nur einmal auf wenn ich auf Ausführen klicke...bleibt nicht offen....

Gruß.
Philipp


----------



## Agar (13. November 2007)

Schau dir mal Sharpdevelop (http://de.wikipedia.org/wiki/SharpDevelop) an, dass unter http://www.icsharpcode.net/OpenSource/SD/Download/ herunterzuladen ist.

Funktioniert unter .NET (separater Download von Microsoft)

Ist alles gratis, setzt nur Windows voraus.

Damit kannst du, wenn du den Quelltext ein wenig anpasst eine .exe daraus machen, die aber .NET von MS am Zielsystem voraussetzt.

Ach ja: Visual Studio Express 2005 ist gegen Registrierung auch kostenlos erhältlich.


----------



## P_H_I_L (14. November 2007)

hmmm hört sich gut an, aber gibts noch ne andere möglichkeit. irgendwelche Multiplattform Tools zum umwandeln und so. Kenn mich nicht so aus damit, Den Quellcode in eine Exe umzuschreiben oder so...
bin da planlos andere möglichkeit habe ich nicht oder?


----------



## Agar (14. November 2007)

Multiplatform einer Programmiersprache von MS bedeutet "jede Microsoft Betriebssystem-Version (ausser MS-DOS)".
Für Visual Basic hast du keine nette andere Möglichkeit, einen Quelltext in eine .exe umzuwandeln, ausser du nimmst eine Version von VB <= 6, aber das wäre nicht kostenlos.

Wenn du deinen Quelltext postest könnte ich dir mehr sagen.


----------



## P_H_I_L (14. November 2007)

natürlich poste ich dir gerne kurz den Quelltext...
es ist nicht viel, kurz was zum Quelltext:
dieser ruft den JBoss server auf und ein anderes VB-Script.
Dieses andere VB-Script ruft mir meine Datenbank auf.

Dieser VBS-Code müsste zu einer Exe umgewadelt werden, da er durch ein Setup-Installer bei diversen Kunden am Dektop u. Startmenü auftaucht. Und niemand sollte mit rechtsklick den VBSCode sehen oder ähnliches, darum will ich eine eifnache exe daraus generieren. Nun zum Code:
-------------------------------------------------------------------------------------------------------------------------------
set fs = CreateObject("Scripting.FilesystemObject")

scriptname = Wscript.ScriptFullName 
scriptpath = fs.getparentfoldername(scriptname)
pathjboss = scriptpath + "\run.bat"
pathvbs = scriptpath + "\db-derby-10.3.1.4-bin\bin\db.vbs"

Set WshShell2 = WScript.CreateObject( "WScript.Shell" )
WshShell2.Run pathvbs,1,False

Set WshShell1 = WScript.CreateObject( "WScript.Shell" )
WshShell1.Run pathjboss,1,True

-------------------------------------------------------------------------------------------------------------------------------

Viele Grüße Phil


----------



## ronaldh (14. November 2007)

Phil,

da Du den Code Kunden verkaufst, und ihn offensichtlich schützen willst, dann solltest Du die Funktionalität auch mit einer echten Programmiersprache programmieren, und dann kannst Du natürlich auch eine Exe erzeugen.

VBS ist, wie der Name schon sagt, eine "Script"-Sprache, mit der es möglich ist, bestimmte Arbeitsabläufe zu automatisieren. VBS ist jedoch nicht dazu gedacht, Anwendungen zu entwickeln und zu kompilieren.

Ob Du Dir nun z.B. ein VB6 kaufst (gibt es bei Ebay teilweise auch günstig), oder aber Dir z.B. VB 2005 Express bei Microsoft kostenlos herunter lädst, ist für diese Art der Anwendung sicherlich egal, realisierbar ist dies mit beiden Versionen.

Ronald


----------



## P_H_I_L (14. November 2007)

du sprichst dich da leicht, aber so einfach ist das nicht für mich 
Das Projekt ist komplett fertig. Auch das Installer programm wurde schon gekauft und verwendet. 
Mein Standpunkt ist so, dass ich von Hals bis Kopf im Stress bin. Mein Chef hat das projekt so abgenommen wie es ist mit VBS-Script. Installer und alles ist schon eingestellt.
--> will jetzt keine zeit mehr verbraten da ich in einem anderen Projekt eingeteilt bin. 

So richtig schützen muss ich das VBS-Script nicht, sind ja keine wichtigen aufrufe! Es ist einfach nur unprofessionell 
ich gebs ja zu ich hätte es gleich anders machen sollen aber jetzt hab ichs schon...
hab in VB noch nie was gemacht und es war schon ein kampf dieses Skript zu schreiben *G*

kann man diese VBS gar nicht in eine EXE kompilieren, dass man das Skript nicht ansehen kann oder es verschlüsseln oder eine Andere möglichkeit um den inhalt zu verstecken oder so?

Gruß,
Philipp


----------



## Agar (14. November 2007)

Du rufst also, ausgehend vom momentanen Verzeichnis ein Programm auf.
Das Programm das du aufrufst ist unterhalb des Verzeichnisses.

Hm.
Bin kein C-Programmierer aber das Programm hier funktioniert leidlich:


```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <shellapi.h>
#include <winuser.h>

int main (int argc, char * argv[])
{  char operation[]="open\0";
   
   char *currdir; // Current directory, Ordner in dem das Programm gestartet wurde
   currdir = malloc(255); //255 Bytes werden wohl reichen
   GetCurrentDirectory(255, currdir); 
   
   // char batending[]="\\run.bat\0";
   // char othervbsending[]= "\\db-derby-10.3.1.4-bin\\bin\\db.vbs\0";
  char myending[]="\\sol.exe\0";
  

  char * myexe;
  myexe = malloc(512);
  myexe = strcat(currdir,myending);

   char errtitle[]="Aufruf des Programmes (s.u.) schlug fehl\0";
  
   // Programm das aufgerufen wird nicht anzeigen: SW_HIDE statt SW_SHOW
   if ((int) ShellExecute(0,operation,myexe, NULL, currdir, SW_SHOW) <= 32)
   { MessageBox( NULL, myexe,errtitle,MB_ICONERROR & MB_OK);
     exit(-1);
   }
   else
   { exit(0); }
}
```

Das Programm habe ich mit MinGW (http://www.parinyasoft.com/download.html) kompiliert, das Icon für das Programm kam von
http://www.iconarchive.com/category/application/slate-icons-by-iconica.html
und wurde in eine .rc (Textdatei) - Datei mittels

```
MAINICON ICON "folder-open.ico"
```
eingebunden.

Wenn das Programm fertig erstellt ist, ruft es sol.exe (Solitär) auf oder bringt eine Fehlermeldung, wenn dieses Programm nicht im selben Ordner ist.

Zu bemerken ist noch, dass Strings in C immer mit einem \0 abzuschliessen sind, sowie sämtliche "\" doppelt, also "\\" geschrieben werden müssen.
Der Pfad zur jeweiligen Datei (myending) ist hardkodiert, das wäre das Einzige was anzupassen ist

Das ganze geht natürlich stattdessen auch mit .NET - aber dann hättest du gleich mehrere Abhängigkeiten (Java, .NET), dieses Programm hier funktioniert ohne auf zusätzliche Programme zurückgreifen zu müssen.


----------



## P_H_I_L (15. November 2007)

habe mich jetzt noch für eine Andere möglichkeit entschieden!
die ist mir heut in der früh eingefallen als ich aufgewacht bin.

und zwar:
ich lasse nun mein VBS-Script von einem BatchFile aufrufen. 
BatchFiles kann man ja mit Multiplattform Tools umwandeln zu Executables!

so jetzt ruft meine Batch(EXE) meine VBS-Dateien auf. Diese VBS-Dateien rufen wiederum versteckt andere BatchFiles auf.

Warum einfach wenns auch umständlich geht .-)

Trotzdem danke für die schnelle hilfe! ihr seit die besten


----------

