web-dev-qa-db-ja.com

VBScriptを実行可能(EXE)ファイルに変換するにはどうすればよいですか?

VBScriptを変換するための情報を探していた(*.vbs)実行可能ファイルにアクセスし、利用可能なツールのほとんどが実際に実行可能ファイルにスクリプトをラップしていることに気付きました。いくつかのツールを試してみましたが、期待どおりに機能しませんでした。 IExpress(Windows XP)でWin32自己抽出cabファイルを作成しようとしましたが、Windows 7マシンで正しく起動しませんでした。

だから私はVBSをexeにコンパイルする方法を探しています。現在のスクリプトをVB Express 2008に移植しようとしていますが、ここではVisual Basicの予備知識がありません。多くのエラーがありますが、まだ試しています。

誰も私がここからどのように進めるべきかについてアドバイスできますか?つまり、自己解凍アーカイブスタンドアロンの実行可能ファイルの代わりに進むべき方法でしょうか?しかし、Winzipのように、抽出後にスクリプトを実行する方法がわかりません。

何か案は?

18
Alex Cheng

VBScriptはコンパイルされた言語ではないプロセスであるため、VBScript(.vbsファイル)を実行可能ファイル(.exeファイル)に変換する方法はありません。ソースコードをネイティブ実行可能コードに変換する方法は "compilation" と呼ばれ、VBScriptのようなscripting言語ではサポートされていません。

確かに、WinZipのようなものを使用して自己解凍型アーカイブにスクリプトを追加できますが、それは圧縮するだけです。ファイルサイズが著しく縮小することは疑わしく、最初はプレーンテキストファイルであるため、圧縮する必要はまったくありません。 self-extractingアーカイブの唯一の目的は、エンドユーザーのコンピューターでextractまたは「解凍」できる圧縮ソフトウェア(WinZipなど)が不要であることです。 。そもそも圧縮されていない場合、これは重要なポイントです。

または、既に述べたように、VBScriptコードファイルをスタンドアロンの実行可能ファイルにラップする方法もありますが、これらはユーザーが.exeファイルをダブルクリックしたときに(現在の未コンパイル状態で)スクリプトを自動的に実行する単なるラッパーです。これには利点があると思いますが、探しているものとは思えません。

VBScriptを実際に実行可能ファイルに変換するには、compiledである可能性のある別の言語でそれを書き換える必要があります。 Visual Basic 6 (.NET Frameworkが導入される前のVBの最新バージョン)は、VBScriptと構文が非常に似ていますが、ネイティブコードへのコンパイルをサポートしています。 VBScriptコードをVB 6に移動すると、ネイティブ実行可能ファイルにコンパイルできます。 .exeファイルを実行するには、ユーザーに VB 6ランタイムライブラリ がインストールされている必要がありますが、それらは現在、野生にあるほとんどのバージョンのWindowsに組み込まれています。

または、先に進んで Visual Basic .NET にジャンプすることもできます。これはsomewhatのままで、VB 6およびVBScriptと似ています(ただし、カットアンドペースト移行の近くにはありません)。 VB.NETプログラムも.exeファイルにコンパイルされますが、ユーザーのコンピューターに.NET Frameworkランタイムをインストールする必要があります。幸いなことに、これも一般的になり、ユーザーがたまたま持っていない場合は簡単に再配布できます。あなたはあなたの質問でこのルートを行くことに言及しました(現在のスクリプトをVB.NETを使用するVB Express 2008に移植しました)が、あなたは多くのエラーを得ていました。これは、カットアンドペーストの移行とは程遠いという意味です。いくつかの表面的な構文上の類似性にもかかわらず、VB 6/VBScriptとVB.NETには、いくつかの巨大の違いがあります。 VBScriptを介した移行のサポートが必要な場合は、Stack Overflowに質問を投稿できます。究極的には、これはおそらくあなたが望むことをするための最良の方法ですが、それが簡単になるとは約束できません。

19
Cody Gray

VBSeditソフトウェアを使用して、VBSコードを.exeファイルに変換できます。インターネットから無料バージョンをダウンロードし、システムにvbsedit applilcationをインストールして、ファイルをexe形式に変換できます。

VbseditはVBscripterの優れたアプリケーションです

15
Sultan

ここにいくつかの可能な解決策があります...

私はまだこれらすべてを試したことはありませんが、すぐに試します。

注:これらのツールのいずれにも個人的または金銭的なつながりはありません。

1)VB Script to EXE Con​​verter(NOT Compiler):(無料)
vbs2exe.com

生成されたexeは真のEXEのようです。

彼らのウェブサイトから:

VBS to EXEは無料のオンラインコンバーターで、vbsファイルをexeに変換するだけでなく:

1- 128ビットキーを使用してvbsファイルのソースコードを暗号化します。
2- win32 APIを呼び出すことができます
3-特にUACが有効になっているときにWindows Vistaで問題が発生した場合、EXEにVBSを試してみることができます。
4- vbsを実行するためにwscript.exeが不要になりました。
5-他のコンバータのように、スクリプトがハードディスクに保存されることはありません。これは抽出ではなくTRUE exeです。

このソリューションは、wscript/cscriptがコンピューターにインストールされていなくても機能するはずです。

基本的に、これにより真の.EXEファイルが作成されます。作成された.EXE内には、wscript/cscriptを置き換える「エンジン」と、VBスクリプトコードの暗号化されたコピー。この置換エンジンは、wscript/cscriptを呼び出すことなく、それ。


2)VBSをコンパイルしてEXEに変換...:
ExeScript

現在のバージョンは3.5です。

これは無料のソリューションではありません。 15日間の試用版があります。その後、多額の$ 44.96(ホームライセンス/非商用)または$ 89.95(ビジネスライセンス/商用利用)のライセンスを購入する必要があります。

以前のソリューションと同様の方法で機能するようです。

そこにあるフォーラムの投稿によると:
投稿: " ExeファイルにはWindows Scripting Host(WSH)?? が必要です)

ExeScriptであるため、「コンパイル」オプションが使用された場合、WSHは必要ありません。
独自のスクリプトホストを実装します。 ...


3)Microsoftの「.vbs to .vbe」暗号化ツールでスクリプトを暗号化します。

どうやら、これはWindows 7/8では機能せず、.vbeファイルを「復号化」する方法がある可能性があります。これを書いている時点で、これをダウンロードするための有効なリンクが見つかりませんでした。見つかったら、この回答に追加します。

2
Kevin Fegan

詳細情報

コンパイラを見つけるには、.netバージョンごとに1つインストールし、コマンドプロンプトを入力します。

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

Windowsフォーム

Windowsフォームバージョンの場合(コンソールウィンドウはありません。実際にフォームを作成することはできませんが、必要に応じてできます)。

コマンドプロンプトで行をコンパイルします。

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

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

これらのオプションパラメータを使用すると、アイコンとマニフェストが提供されます。マニフェストを使用すると、通常どおりの実行、管理者の場合は昇格、特定の実行のみを指定できます。

/ win32icon:デフォルトのWin32リソースのWin32アイコンファイル(.ico)を指定します。

/ win32manifest:提供されたファイルは、出力PEのマニフェストセクションに埋め込まれます。

理論的には、UACをオフにしているのでテストできませんが、このテキストファイルをデスクトップに配置してvbs2exe.manifestと呼び、UTF-8として保存します。

コマンドライン

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

マニフェスト

<?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>

うまくいけば、管理者としてのみ実行されるようになります。

ホストのオブジェクトへのアクセスを許可

次に、vbscriptに.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 

バージョン情報を埋め込むには

https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121 からvbs2exe.resファイルをダウンロードし、デスクトップに配置します。

ResHackerを http://www.angusj.com/resourcehacker からダウンロードします

ResHackerでvbs2exe.resファイルを開きます。編集してください。 [コンパイル]ボタンをクリックします。 [ファイル]メニュー-[保存]をクリックします。

タイプ

"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"
2
David Candy

VbsEditを試すことができます。 AdersoftのVbsEditから最新バージョンを入手してください http://www.vbsedit.com その小さなダウンロードですが、vbsファイルを作成および編集し、一時フォルダーに解凍せずに実行可能ファイルに変換する強力なツールです。 (バージョン4.xxxのような古いバージョンを入手しない限り)2008年からこのプログラムを使用しており、永久に無料で評価できますが、アクティブにするリマインダーが付属しており、vbseditウィンドウからスクリプトを開始するたびに、数秒待つか、それらの小さな迷惑を取り除くために60ドルで購入することができます。
ScriptCryptorとは異なり、まだ評価している場合、変換されたexeには制限がなく、不要な追加ウィンドウなしで実行されます。

0
Ronnie Matthews

PureBasicおよび MsScriptControl でこれを行うことができます

必要なことは、MsScriptControlをPurebasicエディターに貼り付け、以下のようなものを追加することだけです。

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