我正在尝试从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脚本主机在进程中执行脚本,可以获得丰富的错误信息。这可能有些过头了,很难说。