我试图从C#执行vbscript,尽管我没有运行此脚本的权限,但vbscript始终能够成功运行。
代码:
//nswp is the User's password
foreach (char c in uspw)
{
password.AppendChar(c);
}
Process scriptProc = new Process();
scriptProc.StartInfo.RedirectStandardOutput = true;
scriptProc.StartInfo.RedirectStandardError = true;
scriptProc.StartInfo.Domain = "moia.gov.il";
scriptProc.StartInfo.ErrorDialog = true;
scriptProc.StartInfo.UserName = Globals.CURRENT_USER.user_name;
scriptProc.StartInfo.Password = password;
scriptProc.StartInfo.UseShellExecute = false;
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = "//B //Nologo " + pathSave;
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();
当我手动执行此vbscript时(通过双击文件图标),我将得到权限错误,这是我应该的。
我如何才能在c#中捕获此错误并分别引发异常。
最佳答案
当您像在这里一样使用其他过程时,您没有太多选择。这是关于它的:
scriptProc.WaitForExit();
if (scriptProc.ExitCode != 0) throw new Exception("Script failed");
您可以通过使用COM脚本宿主在进程中执行脚本来获取丰富的错误信息。很难说,这太过分了。