문제

전화해야합니다 vbscript 내 C# Windows 응용 프로그램의 파일 (.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 스크립트 호스트 Windows 등을 원하는 경우 스크립트 프로그램에 의해 표시됩니다. 당신은 또한 실행을 시도 할 수도 있습니다 cscript 직접적이지만 일부 시스템에서는 편집기를 시작합니다. :)

다른 팁

또 다른 방법은 vb.net 클래스 라이브러리 프로젝트를 만들고 vbscript 코드를 vb.net 클래스 파일에 복사하고 C# 프로그램에서 vb.net 클래스 라이브러리를 참조하는 것입니다.

vbscript와 vb.net의 차이점을 해결해야합니다 (소수).

여기서 장점은 코드 내 프로세스를 실행한다는 것입니다.

이것은 권한 문제입니다. 귀하의 응용 프로그램 AppPool은 2008 년 에이 작업을 수행하기 위해 가장 높은 권한 수준으로 실행되어야합니다. 신원은 관리자 여야합니다.

C#에서 VBS 파일을 실행하려고한다는 뜻입니까?

처럼 할 수 있습니다 C# 코드에서 다른 프로그램을 실행합니다:

Process.Start(path);

그러나 아무것도 요구하지 않도록해야하며 통역사의 명령 행 버전으로 실행 중입니다.

Process.Start("cscript path\\to\\script.vbs");

검색 자의 이익을 위해 나는 이것을 발견했다 게시하다, 명확한 답변을 제공합니다 (매개 변수가있는 경우 ESP). 그것을 테스트했습니다 - 잘 작동하는 것 같습니다.

string scriptName = "myScript.vbs"; // full path to script
int abc = 2;
string name = "Serrgggio";

ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "cscript.exe";
ps.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", scriptName, abc, name);
//This will equate to running via the command line:
// > cscript.exe "myScript.vbs" "2" "Serrgggio"
Process.Start(ps);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top