C# Windows アプリケーションでVBScriptファイル (.vbs ファイル拡張子)を呼び出す必要があります。これどうやってするの?
Visual Studio で VBScript ファイルにアクセスするためのアドインがあります。しかし、コード ビハインドでスクリプトにアクセスする必要があります。これを行う方法?
次のコードは、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
が、一部のシステムではエディターを起動するだけです:)
もう 1 つの方法は、VB.NET クラス ライブラリ プロジェクトを作成し、VBScript コードを VB.NET クラス ファイルにコピーして、C# プログラムから VB.NET クラス ライブラリを参照することです。
VBScript と VB.NET の違いを修正する必要があります (ほとんどないはずです)。
ここでの利点は、コードをインプロセスで実行できることです。
これは権限の問題です。2008 でこれを行うには、アプリケーション appPool が最高のアクセス許可レベルで実行されている必要があります。ID は管理者である必要があります。
C# から vbs ファイルを実行しようとしているということですか?
C# コードから他のプログラムを実行するのと同じように実行できます。
Process.Start(path);
ただし、何も要求しないこと、およびインタプリタのコマンド ライン バージョンで実行されていることを確認する必要があります。
Process.Start("cscript path\\to\\script.vbs");