19

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

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

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

何か案は?

4

6 に答える 6

21

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

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

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

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

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

于 2010-12-13T07:07:44.487 に答える
17

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

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

于 2011-12-05T18:40:37.120 に答える
3

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

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

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

1)VBスクリプトからEXEへのコンバーター(コンパイラーではありません):(無料)
vbs2exe.com

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

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

VBS to EXEは、vbsファイルをexeに変換するだけでなく、次の機能も備えた無料のオンラインコンバータです。

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

このソリューションは、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の「.vbsto.vbe」暗号化ツールを使用してスクリプトを暗号化します。

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

于 2012-12-21T06:56:32.637 に答える
3

より詳しい情報

コンパイラを見つけるには、.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ファイルをダウンロード し、デスクトップに配置します。

 

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

 

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"
于 2013-10-06T22:05:57.113 に答える
0

これは、PureBasicとMsScriptControlを使用して行うことができます

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

InitScriptControl()
SCtr_AddCode("MsgBox 1")
于 2015-04-14T08:45:03.740 に答える
0

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

于 2016-04-20T05:05:34.197 に答える