37

C# Windows アプリケーションでVBScriptファイル (.vbs ファイル拡張子)を呼び出す必要があります。これどうやってするの?

Visual Studio で VBScript ファイルにアクセスするためのアドインがあります。しかし、コード ビハインドでスクリプトにアクセスする必要があります。これを行う方法?

4

5 に答える 5

68

次のコードは、VBScript スクリプトを実行します。プロンプトやエラーは表示されず、シェル ロゴも表示されません。

System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");

より複雑な手法は、次を使用することです。

Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript"; 
scriptProc.StartInfo.WorkingDirectory = @"c:\scripts\"; //<---very important 
scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
scriptProc.Start();
scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
scriptProc.Close();

プロパティを使用するStartInfoと、プロセス設定に非常に細かくアクセスできます。

スクリプトプログラムでウィンドウなどを表示したい場合は、Windows Script Hostを使用する必要があります。直接実行することもできますcscriptが、一部のシステムではエディターを起動するだけです:)

于 2008-10-14T08:53:04.270 に答える
5

もう 1 つの方法は、VB.NET クラス ライブラリ プロジェクトを作成し、VBScript コードを VB.NET クラス ファイルにコピーして、C# プログラムから VB.NET クラス ライブラリを参照することです。

VBScript と VB.NET の違いを修正する必要があります (ほとんどないはずです)。

ここでの利点は、コードをインプロセスで実行できることです。

于 2011-06-07T13:24:32.577 に答える
4

これは権限の問題です。2008 でこれを行うには、アプリケーション appPool が最高のアクセス許可レベルで実行されている必要があります。ID は管理者である必要があります。

于 2012-02-28T16:35:39.997 に答える
3

C# から vbs ファイルを実行しようとしているということですか?

C# コードから他のプログラムを実行するのと同じように実行できます。

Process.Start(path);

ただし、何も要求しないこと、およびインタプリタのコマンド ライン バージョンで実行されていることを確認する必要があります。

Process.Start("cscript path\\to\\script.vbs");
于 2008-10-14T08:56:46.447 に答える